summaryrefslogtreecommitdiffstats
path: root/tester/covoar/GcovFunctionData.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2014-05-09 21:50:37 +1000
committerChris Johns <chrisj@rtems.org>2014-06-18 16:48:08 +1200
commit100f517ab37265acdf067e36b6860020ec8b2184 (patch)
tree2316c8b888e11dcbcfbfc66a0c1e31991ea20656 /tester/covoar/GcovFunctionData.h
parent4.11: Add ntp patch. (diff)
downloadrtems-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.h274
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