diff options
author | Chris Johns <chrisj@rtems.org> | 2014-05-09 21:50:37 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2014-06-18 16:48:08 +1200 |
commit | 100f517ab37265acdf067e36b6860020ec8b2184 (patch) | |
tree | 2316c8b888e11dcbcfbfc66a0c1e31991ea20656 /tester/covoar/GcovFunctionData.h | |
parent | 4.11: Add ntp patch. (diff) | |
download | rtems-tools-100f517ab37265acdf067e36b6860020ec8b2184.tar.bz2 |
covoar: Merger the covoar source from rtems-testing.git.
Use waf to build covoar.
Diffstat (limited to 'tester/covoar/GcovFunctionData.h')
-rw-r--r-- | tester/covoar/GcovFunctionData.h | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/tester/covoar/GcovFunctionData.h b/tester/covoar/GcovFunctionData.h new file mode 100644 index 0000000..1bc1be9 --- /dev/null +++ b/tester/covoar/GcovFunctionData.h @@ -0,0 +1,274 @@ +/*! @file GcovFunctionData.h + * @brief GcovFunctionData Specification + * + * This file contains the specification of the GcovGcnoWriter class. + */ + +#ifndef __GCOV_FUNCTION_DATA_H__ +#define __GCOV_FUNCTION_DATA_H__ + +#include <stdint.h> +#include <list> +#include "CoverageMapBase.h" +#include "DesiredSymbols.h" + +namespace Gcov { + +#define FUNCTION_NAME_LENGTH 64 +#define FILE_NAME_LENGTH 256 + +#define ON_TREE_ARC_FLAG 0x1 +#define FAKE_ARC_FLAG 0x2 +#define FALLTHROUGH_ARC_FLAG 0x4 + +struct gcov_arc_info +{ + uint32_t sourceBlock; + uint32_t destinationBlock; + uint32_t flags; + uint64_t counter; +}; + +struct gcov_block_info +{ + uint32_t id; + uint32_t flags; + uint32_t numberOfLines; + uint64_t counter; + char sourceFileName[FILE_NAME_LENGTH]; + std::list<uint32_t> lines; +}; + +typedef std::list<gcov_arc_info> arcs_t; +typedef std::list<gcov_arc_info>::iterator arcs_iterator_t; +typedef std::list<gcov_block_info> blocks_t; +typedef std::list<gcov_block_info>::iterator blocks_iterator_t; + + /*! @class GcovFunctionData + * + * This is the specification of the GcovFunctionData class. + */ + class GcovFunctionData { + + public: + + /*! + * This method constructs a GcovFunctionData instance. + */ + GcovFunctionData(); + + /*! + * This method destructs a GcovFunctionData instance. + */ + virtual ~GcovFunctionData(); + + /*! + * This method stores checksum related to function + * + * @param[in] chk stores the checksum value + */ + void setChecksum( + const uint32_t chk + ); + + /*! + * This method stores id of function + * + * @param[in] idNumber stores the id value + */ + void setId( + const uint32_t idNumber + ); + + /*! + * This method stores checksum related to function + * + * @param[in] lineNo passes number of the line begining the function + */ + void setFirstLineNumber( + const uint32_t lineNo + ); + + /*! + * This method stores name of the function and ties it to its + * unified coverage map. + * + * @param[in] functionName passes name of the the function + * + * @return Returns TRUE if the method succeeded and FALSE if it failed. + */ + bool setFunctionName( + const char* fcnName + ); + + /*! + * This method stores name of the source file where function is located + * + * @param[in] fileName passes name of the the file + * + * @return Returns TRUE if the method succeeded and FALSE if it failed. + */ + bool setFileName( + const char* fileName + ); + + /*! + * This method stores name of the source file where block is located + * + * @param[in] block identifies block + * @param[in] fileName passes name of the the file + * + * @return Returns TRUE if the method succeeded and FALSE if it failed. + */ + void setBlockFileName( + const blocks_iterator_t block, + const char* fileName + ); + + /*! + * This method returns arcs list + */ + arcs_t getArcs() const; + + /*! + * This method returns blocks list + */ + blocks_t getBlocks() const; + + /*! + * This method returns checksum + */ + uint32_t getChecksum() const; + + /*! + * This method returns id + */ + uint32_t getId() const; + + /*! + * This method returns counters + * + * @param[out] counterValues array of counter values + * @param[out] countersFound used to return counters number + * @param[out] countersSum used to return sum counters values + * @param[out] countersMax used to return max counter value + */ + void getCounters( uint64_t* counterValues, uint32_t &countersFound, uint64_t &countersSum, uint64_t &countersMax ); + + /*! + * This method adds new arc to arc list + * + * @param[in] source passes source block number + * @param[in] destination passes destination block number + */ + void addArc( + uint32_t source, + uint32_t destination, + uint32_t flags + ); + + /*! + * This method adds new arc to arc list + * + * @param[in] block identifies block + * @param[in] line passes the line number + */ + void addBlockLine( + const blocks_iterator_t block, + const uint32_t line + ); + + /*! + * This method finds block by its ID + * + * @param[in] id passes block id number + * + * @return Returns iterator to a matching block or NULL for error. + */ + blocks_iterator_t findBlockById( + const uint32_t id + ); + + /*! + * This method adds new block to block list + * + * @param[in] id passes block id number + * @param[in] flags passes per block flags + * @param[in] sourceFileName passes containing file name + */ + void addBlock( + const uint32_t id, + const uint32_t flags, + const char * sourceFileName + ); + + /*! + * This method prints info about function + */ + void printFunctionInfo( FILE * textFile, uint32_t function_number ); + + /*! + * This method prints info about coverage of this function + */ + void printCoverageInfo( FILE * textFile, uint32_t function_number ); + + /*! + * This method prints info about chosen arc in arcs list + * + * @param[in] textFile specifies output file + * @param[in] arc passes iterator identifying arc + */ + void printArcInfo( + FILE * textFile, + arcs_iterator_t arc + ); + + /*! + * This method prints info about chosen block in blocks list + * + * @param[in] block passes iterator identifying block + */ + void printBlockInfo( + FILE * textFile, + blocks_iterator_t block + ); + + /*! + * This method calculates values of arc counters + */ + bool processFunctionCounters( void ); + + private: + + uint32_t id; + uint32_t checksum; + uint32_t firstLineNumber; + uint32_t numberOfBlocks; + uint32_t numberOfArcs; + arcs_t arcs; + blocks_t blocks; + char functionName[FUNCTION_NAME_LENGTH]; + char sourceFileName[FILE_NAME_LENGTH]; + + /*! + * This member contains the unified or merged coverage map + * and symbol info for the symbol. + */ + Coverage::CoverageMapBase* coverageMap; + Coverage::SymbolInformation* symbolInfo; + + /*! + * This method creates list of taken/not taken values + * for branches + * + * @param[in] taken used to return taken counts list + * @param[in] notTaken used to return not taken counts list + */ + bool processBranches( + std::list<uint64_t> * taken , + std::list<uint64_t> * notTaken + ); + }; + +} +#endif |