summaryrefslogtreecommitdiffstats
path: root/covoar/CoverageWriterRTEMS.cc
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2010-05-24 20:07:09 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2010-05-24 20:07:09 +0000
commita518bc5b1a39e27a75bb5510ebf272c7658144b1 (patch)
tree5c8e7bcfb36f333f88f94673627addd5fcd7969d /covoar/CoverageWriterRTEMS.cc
parent2010-05-24 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff)
downloadrtems-testing-a518bc5b1a39e27a75bb5510ebf272c7658144b1.tar.bz2
2010-05-24 Jennifer Averett <Jennifer.Averett@OARcorp.com>
* covoar/05_ascending.gif, covoar/05_descending.gif, covoar/05_unsorted.gif, covoar/ConfigFile.cc, covoar/ConfigFile.h, covoar/CoverageFactory.cc, covoar/CoverageFactory.h, covoar/CoverageMap.cc, covoar/CoverageMap.h, covoar/CoverageMapBase.cc, covoar/CoverageMapBase.h, covoar/CoverageRanges.cc, covoar/CoverageRanges.h, covoar/CoverageReaderBase.cc, covoar/CoverageReaderBase.h, covoar/CoverageReaderQEMU.cc, covoar/CoverageReaderQEMU.h, covoar/CoverageReaderRTEMS.cc, covoar/CoverageReaderRTEMS.h, covoar/CoverageReaderSkyeye.cc, covoar/CoverageReaderSkyeye.h, covoar/CoverageReaderTSIM.cc, covoar/CoverageReaderTSIM.h, covoar/CoverageWriterBase.cc, covoar/CoverageWriterBase.h, covoar/CoverageWriterRTEMS.cc, covoar/CoverageWriterRTEMS.h, covoar/CoverageWriterSkyeye.cc, covoar/CoverageWriterSkyeye.h, covoar/CoverageWriterTSIM.cc, covoar/CoverageWriterTSIM.h, covoar/DesiredSymbols.cc, covoar/DesiredSymbols.h, covoar/ExecutableInfo.cc, covoar/ExecutableInfo.h, covoar/Explanations.cc, covoar/Explanations.h, covoar/Makefile, covoar/ObjdumpProcessor.cc, covoar/ObjdumpProcessor.h, covoar/ReportsBase.cc, covoar/ReportsBase.h, covoar/ReportsHtml.cc, covoar/ReportsHtml.h, covoar/ReportsText.cc, covoar/ReportsText.h, covoar/SymbolTable.cc, covoar/SymbolTable.h, covoar/TargetBase.cc, covoar/TargetBase.h, covoar/TargetFactory.cc, covoar/TargetFactory.h, covoar/Target_arm.cc, covoar/Target_arm.h, covoar/Target_i386.cc, covoar/Target_i386.h, covoar/Target_lm32.cc, covoar/Target_lm32.h, covoar/Target_m68k.cc, covoar/Target_m68k.h, covoar/Target_powerpc.cc, covoar/Target_powerpc.h, covoar/Target_sparc.cc, covoar/Target_sparc.h, covoar/TraceConverter.cc, covoar/TraceList.cc, covoar/TraceList.h, covoar/TraceReaderBase.cc, covoar/TraceReaderBase.h, covoar/TraceReaderLogQEMU.cc, covoar/TraceReaderLogQEMU.h, covoar/TraceWriterBase.cc, covoar/TraceWriterBase.h, covoar/TraceWriterQEMU.cc, covoar/TraceWriterQEMU.h, covoar/app_common.cc, covoar/app_common.h, covoar/configfile_test.cc, covoar/coverage_converter.cc, covoar/covmerge.cc, covoar/covoar.cc, covoar/covoar.css, covoar/filter.gif, covoar/qemu-dump-trace.c, covoar/qemu-log.h, covoar/qemu-traces.h, covoar/rtemscov_header.h, covoar/skyeye_header.h, covoar/table.js: New files.
Diffstat (limited to 'covoar/CoverageWriterRTEMS.cc')
-rw-r--r--covoar/CoverageWriterRTEMS.cc92
1 files changed, 92 insertions, 0 deletions
diff --git a/covoar/CoverageWriterRTEMS.cc b/covoar/CoverageWriterRTEMS.cc
new file mode 100644
index 0000000..5cc48b3
--- /dev/null
+++ b/covoar/CoverageWriterRTEMS.cc
@@ -0,0 +1,92 @@
+/*
+ * $Id$
+ */
+
+/*! @file CoverageWriterRTEMS.cc
+ * @brief CoverageWriterRTEMS Implementation
+ *
+ * This file contains the implementation of the functions supporting
+ * the unified overage file format.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "CoverageWriterRTEMS.h"
+#include "rtemscov_header.h"
+
+namespace Coverage {
+
+ CoverageWriterRTEMS::CoverageWriterRTEMS()
+ {
+ }
+
+ CoverageWriterRTEMS::~CoverageWriterRTEMS()
+ {
+ }
+
+ void CoverageWriterRTEMS::writeFile(
+ const char* const file,
+ CoverageMapBase* coverage,
+ uint32_t lowAddress,
+ uint32_t highAddress
+ )
+ {
+ FILE* coverageFile;
+ uint32_t a;
+ int status;
+ uint8_t cover;
+ rtems_coverage_map_header_t header;
+
+ /*
+ * read the file and update the coverage map passed in
+ */
+ coverageFile = fopen( file, "w" );
+ if ( !coverageFile ) {
+ fprintf(
+ stderr,
+ "ERROR: CoverageWriterRTEMS::writeFile - unable to open %s\n",
+ file
+ );
+ exit(-1);
+ }
+
+ /* clear out the header and fill it in */
+ memset( &header, 0, sizeof(header) );
+ header.ver = 0x1;
+ header.header_length = sizeof(header);
+ header.start = lowAddress;
+ header.end = highAddress;
+ strcpy( header.desc, "RTEMS Coverage Data" );
+
+ status = fwrite(&header, 1, sizeof(header), coverageFile);
+ if (status != sizeof(header)) {
+ fprintf(
+ stderr,
+ "ERROR: CoverageWriterRTEMS::writeFile - unable to write header "
+ "to %s\n",
+ file
+ );
+ exit(-1);
+ }
+
+ for ( a=lowAddress ; a < highAddress ; a++ ) {
+ cover = ((coverage->wasExecuted( a )) ? 0x01 : 0);
+ status = fwrite(&cover, 1, sizeof(cover), coverageFile);
+ if (status != sizeof(cover)) {
+ fprintf(
+ stderr,
+ "ERROR: CoverageWriterRTEMS::writeFile - write to %s "
+ "at address 0x%08x failed\n",
+ file,
+ a
+ );
+ exit( -1 );
+ }
+ // fprintf( stderr, "0x%x %d\n", a, cover );
+ }
+
+ fclose( coverageFile );
+ }
+}