<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for gcc-testing (2010-05-07)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>humph</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-07 Glenn Humphrey
* CoverageReaderQEMU.cc, CoverageReaderRTEMS.cc,
CoverageReaderSkyeye.cc, CoverageReaderTSIM.cc, DesiredSymbols.cc,
DesiredSymbols.h, ExecutableInfo.cc, ExecutableInfo.h,
ObjdumpProcessor.cc, ObjdumpProcessor.h, SymbolTable.cc,
SymbolTable.h, covoar.cc: Removed the use of nm to generate the
symbol for each executable. Modified the ObjdumpProcessor to populate
the symbol table and create the coverage maps.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ChangeLog.diff?r1=text&tr1=1.205&r2=text&tr2=1.206&diff_format=h">M</a></td><td width='1%'>1.206</td><td width='100%'>rtems-coverage/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageReaderQEMU.cc.diff?r1=text&tr1=1.11&r2=text&tr2=1.12&diff_format=h">M</a></td><td width='1%'>1.12</td><td width='100%'>rtems-coverage/CoverageReaderQEMU.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc.diff?r1=text&tr1=1.4&r2=text&tr2=1.5&diff_format=h">M</a></td><td width='1%'>1.5</td><td width='100%'>rtems-coverage/CoverageReaderRTEMS.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc.diff?r1=text&tr1=1.8&r2=text&tr2=1.9&diff_format=h">M</a></td><td width='1%'>1.9</td><td width='100%'>rtems-coverage/CoverageReaderSkyeye.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageReaderTSIM.cc.diff?r1=text&tr1=1.6&r2=text&tr2=1.7&diff_format=h">M</a></td><td width='1%'>1.7</td><td width='100%'>rtems-coverage/CoverageReaderTSIM.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/DesiredSymbols.h.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>rtems-coverage/DesiredSymbols.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/DesiredSymbols.cc.diff?r1=text&tr1=1.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</td><td width='100%'>rtems-coverage/DesiredSymbols.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ExecutableInfo.h.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>rtems-coverage/ExecutableInfo.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ExecutableInfo.cc.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>rtems-coverage/ExecutableInfo.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ObjdumpProcessor.h.diff?r1=text&tr1=1.8&r2=text&tr2=1.9&diff_format=h">M</a></td><td width='1%'>1.9</td><td width='100%'>rtems-coverage/ObjdumpProcessor.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ObjdumpProcessor.cc.diff?r1=text&tr1=1.28&r2=text&tr2=1.29&diff_format=h">M</a></td><td width='1%'>1.29</td><td width='100%'>rtems-coverage/ObjdumpProcessor.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/SymbolTable.h.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>rtems-coverage/SymbolTable.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/SymbolTable.cc.diff?r1=text&tr1=1.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</td><td width='100%'>rtems-coverage/SymbolTable.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/covoar.cc.diff?r1=text&tr1=1.13&r2=text&tr2=1.14&diff_format=h">M</a></td><td width='1%'>1.14</td><td width='100%'>rtems-coverage/covoar.cc</td></tr>
</table>
<pre>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ChangeLog:1.205 gcc-testing/rtems-coverage/ChangeLog:1.206
--- gcc-testing/rtems-coverage/ChangeLog:1.205 Fri May 7 13:29:44 2010
+++ gcc-testing/rtems-coverage/ChangeLog Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -1,3 +1,13 @@
</font><font color='#000088'>+2010-05-07 Glenn Humphrey
+
+ * CoverageReaderQEMU.cc, CoverageReaderRTEMS.cc,
+ CoverageReaderSkyeye.cc, CoverageReaderTSIM.cc, DesiredSymbols.cc,
+ DesiredSymbols.h, ExecutableInfo.cc, ExecutableInfo.h,
+ ObjdumpProcessor.cc, ObjdumpProcessor.h, SymbolTable.cc,
+ SymbolTable.h, covoar.cc: Removed the use of nm to generate the
+ symbol for each executable. Modified the ObjdumpProcessor to populate
+ the symbol table and create the coverage maps.
+
</font> 2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
* do_coverage: Pick up style sheet for reports.
<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.11 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.12
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.11 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -14,8 +14,8 @@
</font> #include <sys/stat.h>
#include "CoverageReaderQEMU.h"
<font color='#880000'>-#include "ExecutableInfo.h"
</font> #include "CoverageMap.h"
<font color='#000088'>+#include "ExecutableInfo.h"
</font>
/* XXX really not always right */
typedef uint32_t target_ulong;
<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.4 gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.5
--- gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.4 Fri Mar 5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -14,6 +14,7 @@
</font> #include <sys/stat.h>
#include "CoverageReaderRTEMS.h"
<font color='#000088'>+#include "CoverageMap.h"
</font> #include "ExecutableInfo.h"
#include "rtemscov_header.h"
<font color='#997700'>@@ -32,25 +33,26 @@
</font> ExecutableInfo* const executableInformation
)
{
<font color='#880000'>- FILE *coverageFile;
</font><font color='#000088'>+ CoverageMapBase* aCoverageMap = NULL;
</font> uintptr_t baseAddress;
<font color='#880000'>- uintptr_t length;
- int status;
- uintptr_t i;
</font> uint8_t cover;
<font color='#000088'>+ FILE* coverageFile;
</font> rtems_coverage_map_header_t header;
<font color='#000088'>+ uintptr_t i;
+ uintptr_t length;
</font> struct stat statbuf;
<font color='#000088'>+ int status;
</font>
//
// Verify that the coverage file has a non-zero size.
//
status = stat( file, &statbuf );
<font color='#880000'>- if ( status == -1 ) {
</font><font color='#000088'>+ if (status == -1) {
</font> fprintf( stderr, "Unable to stat %s\n", file );
return false;
}
<font color='#880000'>- if ( statbuf.st_size == 0 ) {
</font><font color='#000088'>+ if (statbuf.st_size == 0) {
</font> fprintf( stderr, "%s is 0 bytes long\n", file );
return false;
}
<font color='#997700'>@@ -59,13 +61,13 @@
</font> // Open the coverage file and read the header.
//
coverageFile = fopen( file, "r" );
<font color='#880000'>- if ( !coverageFile ) {
</font><font color='#000088'>+ if (!coverageFile) {
</font> fprintf( stderr, "Unable to open %s\n", file );
return false;
}
status = fread( &header, sizeof(header), 1, coverageFile );
<font color='#880000'>- if ( status != 1 ) {
</font><font color='#000088'>+ if (status != 1) {
</font> fprintf( stderr, "Unable to read header from %s\n", file );
return false;
}
<font color='#997700'>@@ -88,9 +90,9 @@
</font> //
// Read and process each line of the coverage file.
//
<font color='#880000'>- for ( i=0 ; i<length ; i++ ) {
</font><font color='#000088'>+ for (i=0; i<length; i++) {
</font> status = fread( &cover, sizeof(uint8_t), 1, coverageFile );
<font color='#880000'>- if ( status != 1 ) {
</font><font color='#000088'>+ if (status != 1) {
</font> fprintf(
stderr,
"CoverageReaderRTEMS::ProcessFile - breaking after 0x%08x in %s\n",
<font color='#997700'>@@ -100,8 +102,14 @@
</font> break;
}
<font color='#880000'>- if ( cover ) {
- executableInformation->markWasExecuted( baseAddress + i );
</font><font color='#000088'>+ //
+ // Obtain the coverage map containing the address and
+ // mark the address as executed.
+ //
+ if (cover) {
+ aCoverageMap = executableInformation->getCoverageMap( baseAddress + i );
+ if (aCoverageMap)
+ aCoverageMap->setWasExecuted( baseAddress + i );
</font> }
}
<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.8 gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.9
--- gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.8 Fri Mar 5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -14,6 +14,7 @@
</font> #include <sys/stat.h>
#include "CoverageReaderSkyeye.h"
<font color='#000088'>+#include "CoverageMap.h"
</font> #include "ExecutableInfo.h"
#include "skyeye_header.h"
<font color='#997700'>@@ -32,14 +33,15 @@
</font> ExecutableInfo* const executableInformation
)
{
<font color='#880000'>- uintptr_t baseAddress;
- uint8_t cover;
- FILE* coverageFile;
- prof_header_t header;
- uintptr_t i;
- uintptr_t length;
- struct stat statbuf;
- int status;
</font><font color='#000088'>+ CoverageMapBase* aCoverageMap = NULL;
+ uintptr_t baseAddress;
+ uint8_t cover;
+ FILE* coverageFile;
+ prof_header_t header;
+ uintptr_t i;
+ uintptr_t length;
+ struct stat statbuf;
+ int status;
</font>
//
// Verify that the coverage file has a non-zero size.
<font color='#997700'>@@ -100,17 +102,32 @@
</font> break;
}
<font color='#000088'>+ //
+ // Obtain the coverage map containing the address and
+ // mark the address as executed.
+ //
+ // NOTE: This method ONLY works for Skyeye in 32-bit mode.
+ //
</font> if (cover & 0x01) {
<font color='#880000'>- executableInformation->markWasExecuted( baseAddress + i );
- executableInformation->markWasExecuted( baseAddress + i + 1 );
- executableInformation->markWasExecuted( baseAddress + i + 2 );
- executableInformation->markWasExecuted( baseAddress + i + 3 );
</font><font color='#000088'>+ aCoverageMap = executableInformation->getCoverageMap( baseAddress + i );
+ if (aCoverageMap) {
+ aCoverageMap->setWasExecuted( baseAddress + i );
+ aCoverageMap->setWasExecuted( baseAddress + i + 1 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 2 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 3 );
+ }
</font> }
<font color='#000088'>+
</font> if (cover & 0x10) {
<font color='#880000'>- executableInformation->markWasExecuted( baseAddress + i + 4 );
- executableInformation->markWasExecuted( baseAddress + i + 5 );
- executableInformation->markWasExecuted( baseAddress + i + 6 );
- executableInformation->markWasExecuted( baseAddress + i + 7 );
</font><font color='#000088'>+ aCoverageMap = executableInformation->getCoverageMap(
+ baseAddress + i + 4
+ );
+ if (aCoverageMap) {
+ aCoverageMap->setWasExecuted( baseAddress + i + 4 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 5 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 6 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 7 );
+ }
</font> }
}
<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.6 gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.7
--- gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.6 Fri Mar 5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderTSIM.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -14,6 +14,7 @@
</font> #include <sys/stat.h>
#include "CoverageReaderTSIM.h"
<font color='#000088'>+#include "CoverageMap.h"
</font> #include "ExecutableInfo.h"
namespace Coverage {
<font color='#997700'>@@ -31,23 +32,24 @@
</font> ExecutableInfo* const executableInformation
)
{
<font color='#880000'>- int baseAddress;
- int cover;
- FILE* coverageFile;
- int i;
- struct stat statbuf;
- int status;
</font><font color='#000088'>+ CoverageMapBase* aCoverageMap = NULL;
+ int baseAddress;
+ int cover;
+ FILE* coverageFile;
+ int i;
+ struct stat statbuf;
+ int status;
</font>
//
// Verify that the coverage file has a non-zero size.
//
status = stat( file, &statbuf );
<font color='#880000'>- if ( status == -1 ) {
</font><font color='#000088'>+ if (status == -1) {
</font> fprintf( stderr, "Unable to stat %s\n", file );
return false;
}
<font color='#880000'>- if ( statbuf.st_size == 0 ) {
</font><font color='#000088'>+ if (statbuf.st_size == 0) {
</font> fprintf( stderr, "%s is 0 bytes long\n", file );
return false;
}
<font color='#997700'>@@ -56,7 +58,7 @@
</font> // Open the coverage file.
//
coverageFile = fopen( file, "r" );
<font color='#880000'>- if ( !coverageFile ) {
</font><font color='#000088'>+ if (!coverageFile) {
</font> fprintf( stderr, "Unable to open %s\n", file );
return false;
}
<font color='#997700'>@@ -66,13 +68,13 @@
</font> //
while ( 1 ) {
status = fscanf( coverageFile, "%x : ", &baseAddress );
<font color='#880000'>- if ( status == EOF || status == 0 ) {
</font><font color='#000088'>+ if (status == EOF || status == 0) {
</font> break;
}
<font color='#880000'>- // fprintf( stderr, "%08x : ", baseAddress );
- for ( i=0 ; i < 0x80 ; i+=4 ) {
</font><font color='#000088'>+
+ for (i=0; i < 0x80; i+=4) {
</font> status = fscanf( coverageFile, "%d", &cover );
<font color='#880000'>- if ( status == EOF || status == 0 ) {
</font><font color='#000088'>+ if (status == EOF || status == 0) {
</font> fprintf(
stderr,
"CoverageReaderTSIM: WARNING! Short line in %s at address 0x%08x\n",
<font color='#997700'>@@ -81,16 +83,23 @@
</font> );
break;
}
<font color='#880000'>- // fprintf( stderr, "%d ", cover );
- if ( cover & 1 ) {
- executableInformation->markWasExecuted( baseAddress + i );
- executableInformation->markWasExecuted( baseAddress + i + 1 );
- executableInformation->markWasExecuted( baseAddress + i + 2 );
- executableInformation->markWasExecuted( baseAddress + i + 3 );
</font><font color='#000088'>+
+ //
+ // Obtain the coverage map containing the address and
+ // mark the address as executed.
+ //
+ if (cover & 1) {
+ aCoverageMap = executableInformation->getCoverageMap(
+ baseAddress + i
+ );
+ if (aCoverageMap) {
+ aCoverageMap->setWasExecuted( baseAddress + i );
+ aCoverageMap->setWasExecuted( baseAddress + i + 1 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 2 );
+ aCoverageMap->setWasExecuted( baseAddress + i + 3 );
+ }
</font> }
}
<font color='#880000'>- // fprintf( stderr, "\n" );
-<span style="background-color: #FF0000"> </span>
</font> }
fclose( coverageFile );
<font color='#006600'>diff -u gcc-testing/rtems-coverage/DesiredSymbols.h:1.2 gcc-testing/rtems-coverage/DesiredSymbols.h:1.3
--- gcc-testing/rtems-coverage/DesiredSymbols.h:1.2 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.h Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -210,10 +210,10 @@
</font> );
/*!
<font color='#880000'>- * This method preprocess each symbols coverage map to marking nop
</font><font color='#000088'>+ * This method preprocesses each symbol's coverage map to mark nop
</font> * and branch information.
*/
<font color='#880000'>- void Preprocess( void );
</font><font color='#000088'>+ void preprocess( void );
</font>
private:
<font color='#006600'>diff -u gcc-testing/rtems-coverage/DesiredSymbols.cc:1.5 gcc-testing/rtems-coverage/DesiredSymbols.cc:1.6
--- gcc-testing/rtems-coverage/DesiredSymbols.cc:1.5 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -106,12 +106,12 @@
</font> #undef MAX_LINE_LENGTH
}
<font color='#880000'>- void DesiredSymbols::Preprocess( void )
</font><font color='#000088'>+ void DesiredSymbols::preprocess( void )
</font> {
<font color='#880000'>- CoverageMapBase* theCoverageMap;
- std::list<ObjdumpProcessor::objdumpLine_t>::reverse_iterator itr;
- std::list<ObjdumpProcessor::objdumpLine_t>::iterator fitr;
- DesiredSymbols::symbolSet_t::iterator sitr;
</font><font color='#000088'>+ ObjdumpProcessor::objdumpLines_t::iterator fitr;
+ ObjdumpProcessor::objdumpLines_t::reverse_iterator itr;
+ DesiredSymbols::symbolSet_t::iterator sitr;
+ CoverageMapBase* theCoverageMap;
</font>
// Look at each symbol.
for (sitr = SymbolsToAnalyze->set.begin();
<font color='#997700'>@@ -145,26 +145,28 @@
</font> break;
}
<font color='#880000'>- for (fitr = sitr->second.instructions.begin(), fitr++;
</font><font color='#000088'>+ // Mark any branch instructions.
+ for (fitr = sitr->second.instructions.begin();
</font> fitr != sitr->second.instructions.end();
fitr++) {
if (fitr->isBranch) {
<font color='#880000'>- theCoverageMap->setIsBranch( fitr->address - sitr->second.baseAddress );
</font><font color='#000088'>+ theCoverageMap->setIsBranch(
+ fitr->address - sitr->second.baseAddress
+ );
</font> }
}
<font color='#880000'>-
</font> }
}
void DesiredSymbols::computeUncovered( void )
{
<font color='#880000'>- uint32_t a, la, ha;
- uint32_t endAddress;
- std::list<ObjdumpProcessor::objdumpLine_t>::reverse_iterator itr;
- DesiredSymbols::symbolSet_t::iterator sitr;
- CoverageRanges* theBranches;
- CoverageMapBase* theCoverageMap;
- CoverageRanges* theRanges;
</font><font color='#000088'>+ uint32_t a, la, ha;
+ uint32_t endAddress;
+ ObjdumpProcessor::objdumpLines_t::reverse_iterator itr;
+ DesiredSymbols::symbolSet_t::iterator sitr;
+ CoverageRanges* theBranches;
+ CoverageMapBase* theCoverageMap;
+ CoverageRanges* theRanges;
</font>
// Look at each symbol.
for (sitr = SymbolsToAnalyze->set.begin();
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ExecutableInfo.h:1.1 gcc-testing/rtems-coverage/ExecutableInfo.h:1.2
--- gcc-testing/rtems-coverage/ExecutableInfo.h:1.1 Fri Mar 5 10:45:38 2010
+++ gcc-testing/rtems-coverage/ExecutableInfo.h Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -77,45 +77,18 @@
</font> void initialize( void );
/*!
<font color='#880000'>- * This method marks the specified address of the executable
- * as a branch instruction and indicates that it was NOT taken.
</font><font color='#000088'>+ * This method creates a coverage map for the specified symbol.
</font> *
<font color='#880000'>- * @param[in] address indicates the address of the branch instruction
- * that was NOT taken
- */
- void markBranchNotTaken(
- uint32_t address
- );
-
- /*!
- * This method marks the specified address of the executable
- * as a branch instruction and indicates that it was taken.
- *
- * @param[in] address indicates the address of the branch instruction
- * that was taken
- */
- void markBranchTaken(
- uint32_t address
- );
-
- /*!
- * This method marks the specified address of the executable
- * as the starting address for an instruction.
- *
- * @param[in] address indicates the address of the start of an instruction
- */
- void markStartOfInstruction(
- uint32_t address
- );
-
- /*!
- * This method marks the specified address of the executable
- * as an address that was executed.
</font><font color='#000088'>+ * @param[in] symbolName specifies the name of the symbol
+ * @param[in] lowAddress specifies the low address of the coverage map
+ * @param[in] highAddress specifies the high address of the coverage map
</font> *
<font color='#880000'>- * @param[in] address indicates the address that was executed
</font><font color='#000088'>+ * @return Returns a pointer to the coverage map
</font> */
<font color='#880000'>- void markWasExecuted(
- uint32_t address
</font><font color='#000088'>+ CoverageMapBase* createCoverageMap (
+ const std::string& symbolName,
+ uint32_t lowAddress,
+ uint32_t highAddress
</font> );
/*!
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ExecutableInfo.cc:1.2 gcc-testing/rtems-coverage/ExecutableInfo.cc:1.3
--- gcc-testing/rtems-coverage/ExecutableInfo.cc:1.2 Thu Mar 11 09:58:10 2010
+++ gcc-testing/rtems-coverage/ExecutableInfo.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -68,136 +68,30 @@
</font>
void ExecutableInfo::initialize( void )
{
<font color='#880000'>- CoverageMapBase *aCoverageMap;
- uint32_t highAddress;
- SymbolTable::symbolInfo* info;
- DesiredSymbols::symbolSet_t::iterator itr;
- uint32_t lowAddress;
- std::string symbol;
-
- // Create and initialize symbol table.
- if ( Verbose )
- fprintf( stderr, "Reading symbol table of %s\n", fileName.c_str() );
</font><font color='#000088'>+ // Create the symbol table.
</font> theSymbolTable = new SymbolTable();
<font color='#880000'>- theSymbolTable->load( fileName );
-
- // Create a coverage map for each symbol to analyze.
- for (itr = SymbolsToAnalyze->set.begin();
- itr != SymbolsToAnalyze->set.end();
- itr++) {
-
- symbol = (*itr).first;
- info = NULL;
- info = theSymbolTable->getInfo( symbol );
- if (!info) {
- /* A little too verbose :-D */
- #if 0
- if (Verbose)
- fprintf(
- stderr,
- "Unable to find symbol information for %s\n",
- symbol.c_str()
- );
- #endif
- continue;
- }
-
- lowAddress = info->startingAddress;
- highAddress = lowAddress + info->length - 1;
-
- aCoverageMap = NULL;
- aCoverageMap = new CoverageMap( lowAddress, highAddress );
- if (!aCoverageMap) {
- fprintf(
- stderr, "Unable to create coverage map for %s\n", symbol.c_str()
- );
- continue;
- }
-
- coverageMaps[ symbol ] = aCoverageMap;
- }
- }
-
- void ExecutableInfo::markBranchNotTaken(
- uint32_t address
- )
- {
- CoverageMapBase* aCoverageMap = NULL;
- uint32_t beginning;
-
- // Obtain the coverage map containing the specified address.
- aCoverageMap = getCoverageMap( address );
-
- // Ensure that coverage map exists.
- if (aCoverageMap) {
-
- // Determine the beginning address of the instruction that
- // contains the specified address. We only want to mark the
- // beginning address of the instruction.
- if (aCoverageMap->getBeginningOfInstruction( address, &beginning )) {
- aCoverageMap->setIsBranch( beginning );
- aCoverageMap->setWasNotTaken( beginning );
- if (Verbose)
- fprintf(
- stderr, "Marking branch not taken at 0x%x\n", beginning
- );
- }
- }
</font> }
<font color='#880000'>- void ExecutableInfo::markBranchTaken(
- uint32_t address
</font><font color='#000088'>+ CoverageMapBase* ExecutableInfo::createCoverageMap (
+ const std::string& symbolName,
+ uint32_t lowAddress,
+ uint32_t highAddress
</font> )
{
<font color='#880000'>- CoverageMapBase* aCoverageMap = NULL;
- uint32_t beginning;
-
- // Obtain the coverage map containing the specified address.
- aCoverageMap = getCoverageMap( address );
</font><font color='#000088'>+ CoverageMapBase* theMap = NULL;
</font>
<font color='#880000'>- // Ensure that coverage map exists.
- if (aCoverageMap) {
</font><font color='#000088'>+ theMap = new CoverageMap( lowAddress, highAddress );
</font>
<font color='#880000'>- // Determine the beginning address of the instruction that
- // contains the specified address. We only want to mark the
- // beginning address of the instruction.
- if (aCoverageMap->getBeginningOfInstruction( address, &beginning )) {
- aCoverageMap->setIsBranch( beginning );
- aCoverageMap->setWasTaken( beginning );
- if (Verbose)
- fprintf(
- stderr, "Marking branch taken at 0x%x\n", beginning
- );
- }
- }
- }
-
- void ExecutableInfo::markStartOfInstruction(
- uint32_t address<span style="background-color: #FF0000"> </span>
- )
- {
- CoverageMapBase* aCoverageMap = NULL;
-
- // Obtain the coverage map containing the specified address.
- aCoverageMap = getCoverageMap( address );
-
- // Ensure that coverage map exists.
- if (aCoverageMap)
- aCoverageMap->setIsStartOfInstruction( address );
- }
-
- void ExecutableInfo::markWasExecuted(
- uint32_t address
- )
- {
- CoverageMapBase* aCoverageMap = NULL;
</font><font color='#000088'>+ if (!theMap)
+ fprintf(
+ stderr, "Unable to create coverage map for %s\n",
+ symbolName.c_str()
+ );
</font>
<font color='#880000'>- // Obtain the coverage map containing the specified address.
- aCoverageMap = getCoverageMap( address );
</font><font color='#000088'>+ else
+ coverageMaps[ symbolName ] = theMap;
</font>
<font color='#880000'>- // Ensure that coverage map exists.
- if (aCoverageMap)
- aCoverageMap->setWasExecuted( address );
</font><font color='#000088'>+ return theMap;
</font> }
void ExecutableInfo::mergeCoverage( void ) {
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.8 gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.9
--- gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.8 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.h Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -72,6 +72,8 @@
</font>
} objdumpLine_t;
<font color='#000088'>+ typedef std::list<objdumpLine_t> objdumpLines_t;
+
</font> typedef std::list<uint32_t> objdumpFile_t;
/*!
<font color='#997700'>@@ -132,8 +134,7 @@
</font> private:
objdumpFile_t objdumpList;
<font color='#880000'>- Target::TargetBase *target_m;
-
</font><font color='#000088'>+ Target::TargetBase* target_m;
</font>
/*!
* This method determines whether the specified line is a
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.28 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.29
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.28 Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -19,11 +19,61 @@
</font>
#include "ObjdumpProcessor.h"
#include "app_common.h"
<font color='#000088'>+#include "CoverageMap.h"
</font> #include "ExecutableInfo.h"
<font color='#000088'>+#include "SymbolTable.h"
</font> #include "TargetFactory.h"
namespace Coverage {
<font color='#000088'>+ void finalizeSymbol(
+ ExecutableInfo* const executableInfo,
+ std::string& symbolName,
+ uint32_t lowAddress,
+ uint32_t highAddress,
+ ObjdumpProcessor::objdumpLines_t instructions,
+ SymbolInformation* symbolInfo
+ ) {
+
+ CoverageMapBase* aCoverageMap = NULL;
+ ObjdumpProcessor::objdumpLines_t::iterator itr;
+ SymbolTable* theSymbolTable;
+
+ // If there are NOT already saved instructions, save them.
+ if (symbolInfo->instructions.empty()) {
+ symbolInfo->sourceFile = executableInfo->getFileName();
+ symbolInfo->baseAddress = lowAddress;
+ symbolInfo->instructions = instructions;
+ }
+
+ // Add the symbol to this executable's symbol table.
+ theSymbolTable = executableInfo->getSymbolTable();
+ theSymbolTable->addSymbol(
+ symbolName, lowAddress, highAddress - lowAddress + 1
+ );
+
+ // Create a coverage map for the symbol.
+ aCoverageMap = executableInfo->createCoverageMap(
+ symbolName, lowAddress, highAddress
+ );
+
+ if (aCoverageMap) {
+
+ // Mark the start of each instruction in the coverage map.
+ for (itr = instructions.begin();
+ itr != instructions.end();
+ itr++ ) {
+
+ aCoverageMap->setIsStartOfInstruction( itr->address );
+ }
+
+ // Create a unified coverage map for the symbol.
+ SymbolsToAnalyze->createCoverageMap(
+ symbolName, highAddress - lowAddress + 1
+ );
+ }
+ }
+
</font> ObjdumpProcessor::ObjdumpProcessor()
{
target_m = Target::TargetFactory(Tools->getTarget());
<font color='#997700'>@@ -90,7 +140,7 @@
</font> if ( FileIsNewer( exeFileName.c_str(), dumpFile )) {
sprintf(
buffer,
<font color='#880000'>- "%s -da --source %s | sed -e \'s/ *$//\' >%s",
</font><font color='#000088'>+ "%s -da --section=.text --source %s | sed -e \'s/ *$//\' >%s",
</font> Tools->getObjdump(),
exeFileName.c_str(),
dumpFile
<font color='#997700'>@@ -100,7 +150,7 @@
</font> if (status) {
fprintf(
stderr,
<font color='#880000'>- "ERROR: ObjdumpProcessor::load - command (%s) failed with %d\n",
</font><font color='#000088'>+ "ERROR: ObjdumpProcessor::getFile - command (%s) failed with %d\n",
</font> buffer,
status
);
<font color='#997700'>@@ -113,7 +163,7 @@
</font> if (!objdumpFile) {
fprintf(
stderr,
<font color='#880000'>- "ERROR: ObjdumpProcessor::load - unable to open %s\n",
</font><font color='#000088'>+ "ERROR: ObjdumpProcessor::getFile - unable to open %s\n",
</font> dumpFile
);
exit(-1);
<font color='#997700'>@@ -175,26 +225,26 @@
</font> }
}
<font color='#880000'>-
</font> void ObjdumpProcessor::load(
ExecutableInfo* const executableInformation
)
{
<font color='#880000'>- uint32_t baseAddress;
</font><font color='#000088'>+ uint32_t address;
+ uint32_t baseAddress = 0;
</font> char buffer[ 512 ];
char* cStatus;
<font color='#880000'>- uint32_t endAddress = 0xffffffff;
</font><font color='#000088'>+ std::string currentSymbol = "";
</font> uint32_t instructionAddress;
int items;
objdumpLine_t lineInfo;
FILE* objdumpFile;
bool processSymbol = false;
<font color='#880000'>- bool saveInstructionDump = false;
</font> char symbol[ 100 ];
<font color='#880000'>- SymbolInformation* symbolInfo = NULL;
</font><font color='#000088'>+ SymbolInformation* symbolInformation = NULL;
</font> char terminator;
<font color='#000088'>+ objdumpLines_t theInstructions;
</font>
<font color='#880000'>-
</font><font color='#000088'>+ // Obtain the objdump file.
</font> objdumpFile = getFile( executableInformation->getFileName() );
// Process all lines from the objdump file.
<font color='#997700'>@@ -203,8 +253,29 @@
</font> // Get the line.
cStatus = fgets( buffer, 512, objdumpFile );
if (cStatus == NULL) {
<font color='#000088'>+
+ // If we are currently processing a symbol, finalize it.
+ if ((processSymbol) && (symbolInformation)) {
+ finalizeSymbol(
+ executableInformation,
+ currentSymbol,
+ baseAddress,
+ address, // XXX fix to determine corrent end address
+ theInstructions,
+ symbolInformation
+ );
+ fprintf(
+ stderr,
+ "WARNING: ObjdumpProcessor::load - analysis of symbol %s \n"
+ " may be incorrect. It was the last symbol in %s\n"
+ " and the length of its last instruction is assumed to be one.\n",
+ currentSymbol.c_str(),
+ executableInformation->getFileName().c_str()
+ );
+ }
</font> break;
}
<font color='#000088'>+
</font> buffer[ strlen(buffer) - 1] = '\0';
lineInfo.line = buffer;
<font color='#997700'>@@ -215,40 +286,42 @@
</font> lineInfo.isBranch = false;
// Look for the start of a symbol's objdump and extract
<font color='#880000'>- // address and symbol.
</font><font color='#000088'>+ // address and symbol (i.e. address <symbolname>:).
</font> items = sscanf(
buffer,
"%x <%[^>]>%c",
<font color='#880000'>- &baseAddress, symbol, &terminator
</font><font color='#000088'>+ &address, symbol, &terminator
</font> );
<font color='#880000'>- // If all items found ...
</font><font color='#000088'>+ // If all items found, we are at the beginning of a symbol's objdump.
</font> if ((items == 3) && (terminator == ':')) {
<font color='#880000'>- // we are at the beginning of a symbol's objdump and
- // must end any processing of the previous symbol.
- processSymbol = false;
- saveInstructionDump = false;
</font><font color='#000088'>+ // If we are currently processing a symbol, finalize it.
+ if ((processSymbol) && (symbolInformation)) {
+ finalizeSymbol(
+ executableInformation,
+ currentSymbol,
+ baseAddress,
+ address - 1,
+ theInstructions,
+ symbolInformation
+ );
+ }
</font>
<font color='#880000'>- // See if the symbol is one that we care about.
- symbolInfo = SymbolsToAnalyze->find( symbol );
</font><font color='#000088'>+ // Start processing of a new symbol.
+ baseAddress = 0;
+ currentSymbol = "";
+ processSymbol = false;
+ theInstructions.clear();
</font>
<font color='#880000'>- // If it is, ...
- if (symbolInfo) {
</font><font color='#000088'>+ // See if the new symbol is one that we care about.
+ symbolInformation = SymbolsToAnalyze->find( symbol );
</font>
<font color='#880000'>- // indicate that we are processing a symbols objdump and
- // compute the ending address for termination.
</font><font color='#000088'>+ if (symbolInformation) {
+ baseAddress = address;
+ currentSymbol = symbol;
</font> processSymbol = true;
<font color='#880000'>- endAddress = baseAddress +
- executableInformation->getSymbolTable()->getLength( symbol ) - 1;
-
- // If there are NOT already instructions available, indicate that they
- // are to be saved.
- if (symbolInfo->instructions.empty()) {
- saveInstructionDump = true;
- symbolInfo->sourceFile = executableInformation->getFileName();
- symbolInfo->baseAddress = baseAddress;
- }
</font><font color='#000088'>+ theInstructions.push_back( lineInfo );
</font> }
}
<font color='#997700'>@@ -264,36 +337,16 @@
</font> // If it looks like an instruction ...
if ((items == 2) && (terminator == ':')) {
<font color='#880000'>- // and we are NOT beyond the end of the symbol's objdump,
- if (instructionAddress <= endAddress) {
-
- // update the line's information and ...
- lineInfo.address = instructionAddress;
- lineInfo.isInstruction = true;
- lineInfo.isNop = isNop( buffer, lineInfo.nopSize );
- lineInfo.isBranch = isBranchLine( buffer );
-
- // mark the address as the beginning of an instruction.
- executableInformation->markStartOfInstruction( instructionAddress );
- }
-
- // If we are beyond the end of the symbol's objdump,
- // it's time to end processing of this symbol.
- else {
- processSymbol = false;
- saveInstructionDump = false;
- }
</font><font color='#000088'>+ // update the line's information, save it and ...
+ lineInfo.address = instructionAddress;
+ lineInfo.isInstruction = true;
+ lineInfo.isNop = isNop( buffer, lineInfo.nopSize );
+ lineInfo.isBranch = isBranchLine( buffer );
</font> }
<font color='#880000'>- }
-
- // If we are processing a symbol, ...
- if (processSymbol && saveInstructionDump) {
-
- // add line to the current symbol's information and ...
- symbolInfo->instructions.push_back( lineInfo );
</font>
<font color='#000088'>+ // Always save the line.
+ theInstructions.push_back( lineInfo );
</font> }
}
}
<font color='#880000'>-
</font> }
<font color='#006600'>diff -u gcc-testing/rtems-coverage/SymbolTable.h:1.2 gcc-testing/rtems-coverage/SymbolTable.h:1.3
--- gcc-testing/rtems-coverage/SymbolTable.h:1.2 Tue Apr 13 14:23:22 2010
+++ gcc-testing/rtems-coverage/SymbolTable.h Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -46,6 +46,21 @@
</font> virtual ~SymbolTable();
/*!
<font color='#000088'>+ * This method adds the specified symbol information to the
+ * symbol table.
+ *
+ * @param[in] symbol specifies the symbol to add
+ * @param[in] start specifies the symbol's start address
+ * @param[in] length specifies the symbol's length
+ *
+ */
+ void addSymbol(
+ const std::string& symbol,
+ const uint32_t start,
+ const uint32_t length
+ );
+
+ /*!
</font> * This method returns the symbol information for the specified symbol.
*
* @param[in] symbol specifies the symbol for which to obtain information
<font color='#997700'>@@ -78,33 +93,20 @@
</font> uint32_t address
);
<font color='#880000'>- /*!
- * This method loads the symbol table from the specified executable.
- *
- * @param[in] executableName specifies the file name of the executable
- *
- * @return Returns TRUE if the symbol table was loaded and
- * FALSE otherwise.
- */
- bool load(
- const std::string& executableName
- );
-
</font> private:
/*!
<font color='#880000'>- * This map associates each address from an executable
- * with the symbol that contains the address.
</font><font color='#000088'>+ * This map associates the end address of a symbol's address
+ * range with the symbol's address range definition.
</font> */
typedef struct {
<font color='#880000'>- uint32_t min;
- uint32_t max;
</font><font color='#000088'>+ uint32_t low;
+ uint32_t high;
</font> std::string symbol;
} symbol_entry_t;
typedef std::map< uint32_t, symbol_entry_t > contents_t;
contents_t contents;
<font color='#880000'>-
</font> /*!
* This map associates each symbol from an executable with
* the symbol's information.
<font color='#006600'>diff -u gcc-testing/rtems-coverage/SymbolTable.cc:1.5 gcc-testing/rtems-coverage/SymbolTable.cc:1.6
--- gcc-testing/rtems-coverage/SymbolTable.cc:1.5 Sat Apr 24 10:34:00 2010
+++ gcc-testing/rtems-coverage/SymbolTable.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -27,6 +27,29 @@
</font> {
}
<font color='#000088'>+ void SymbolTable::addSymbol(
+ const std::string& symbol,
+ const uint32_t start,
+ const uint32_t length
+ )
+ {
+ uint32_t end = 0;
+ symbol_entry_t entry;
+ symbolInfo symbolData;
+
+ // Add an entry to the address map.
+ end = start + length - 1;
+ entry.low = start;
+ entry.high = end;
+ entry.symbol = symbol;
+ contents[ end ] = entry;
+
+ // Add an entry to the symbol information map.
+ symbolData.startingAddress = start;
+ symbolData.length = length;
+ info[ symbol ] = symbolData;
+ }
+
</font> SymbolTable::symbolInfo* SymbolTable::getInfo(
const std::string& symbol
)
<font color='#997700'>@@ -55,116 +78,22 @@
</font> uint32_t address
)
{
<font color='#880000'>- contents_t::iterator it = contents.end();
</font><font color='#000088'>+ contents_t::iterator it;
</font>
<font color='#000088'>+ // Ensure that the symbol table is not empty.
</font> if ( contents.size() == 0 )
return "";
<font color='#880000'>- it--;
- if (address > ((*it).first)) {
- return "";
- }
-
</font><font color='#000088'>+ // Find the first entry whose end address is greater
+ // than the specified address.
</font> it = contents.lower_bound( address );
<font color='#880000'>- if (((*it).second).min <= address ) {
- return ((*it).second).symbol;
- } else {
- return "";
- }
- }
</font>
<font color='#880000'>- bool SymbolTable::load(
- const std::string& executableName
- )
- {
- char buffer[512];
- char *cStatus;
- uint32_t end = 0;
- int items;
- uint32_t length = 0;
- FILE *nmFile = NULL;
- uint32_t start = 0;
- char symbol[ 100 ];
- symbolInfo symbolData;
- char nmName[128];
-
-
- sprintf(
- nmName,
- "%s.nm",
- executableName.c_str()
- );
-
- // Generate the nm output
- if (FileIsNewer(executableName.c_str(), nmName )){
-
- sprintf( buffer, "%s -n -f sysv %s | sed -e \'s/ *$//\' >%s",
- Tools->getNm(), executableName.c_str(), nmName );
-
- if ( system( buffer ) ) {
- fprintf(
- stderr,
- "ERROR: SymbolTable::load - command (%s) failed\n",
- buffer
- );
- exit( -1 );
- }
- }
-
- // Read the file and process each desired symbol
- nmFile = fopen( nmName, "r" );
- if ( !nmFile ) {
- fprintf(
- stderr,
- "ERROR: SymbolTable::load - unable to open %s\n",
- nmName
- );
- exit(-1);
- }
-
- // Process all lines from the nm file.
- while ( 1 ) {
-
- // Get the line.
- cStatus = fgets( buffer, 512, nmFile );
- if ( cStatus == NULL ) {
- break;
- }
- buffer[ strlen(buffer) - 1] = '\0';
-
- // Extract the symbol, start address and length.
- items = sscanf(
- buffer,
- "%[^| ] |%x|%*[^|]| FUNC|%x",
- symbol, &start, &length
- );
-
- // If all items found ...
- if (items == 3) {
-
- // and it is a desired symbol, ...
- if (SymbolsToAnalyze->isDesired( symbol )) {
-
- // add the symbol information to the symbol table.
- end = start + length - 1;
- symbol_entry_t entry = { start, end, symbol };
- contents[end] = entry;
-
- symbolData.startingAddress = start;
- symbolData.length = length;
- info[ symbol ] = symbolData;
-
- // Also create a coverage map for the results of the analysis.
- SymbolsToAnalyze->createCoverageMap( symbol, length );
- }
- }
- }
-
- fclose( nmFile );
-
- // Remove temporary file
- // (void) system( "rm -f nm.tmp" );
- return true;
</font><font color='#000088'>+ // If an entry was found and its low address is less than or
+ // equal to the specified address, then return the symbol.
+ if ((it != contents.end()) && ((it->second).low <= address ))
+ return (it->second).symbol;
+
+ return "";
</font> }
}
<font color='#006600'>diff -u gcc-testing/rtems-coverage/covoar.cc:1.13 gcc-testing/rtems-coverage/covoar.cc:1.14
--- gcc-testing/rtems-coverage/covoar.cc:1.13 Thu May 6 12:54:13 2010
+++ gcc-testing/rtems-coverage/covoar.cc Fri May 7 13:53:58 2010
</font><font color='#997700'>@@ -342,10 +342,10 @@
</font> eitr++;
}
<font color='#880000'>- // Do necessary preprocessing uncovered ranges and branches
</font><font color='#000088'>+ // Do necessary preprocessing of uncovered ranges and branches
</font> if (Verbose)
<font color='#880000'>- fprintf( stderr, "Preprocess uncovered ranges and branches\n" );
- SymbolsToAnalyze->Preprocess();
</font><font color='#000088'>+ fprintf( stderr, "Preprocess uncovered ranges and branches\n" );
+ SymbolsToAnalyze->preprocess();
</font>
// Determine the uncovered ranges and branches.
if (Verbose)
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
* ReportsBase.cc: Fix name of coverage report.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ChangeLog.diff?r1=text&tr1=1.203&r2=text&tr2=1.204&diff_format=h">M</a></td><td width='1%'>1.204</td><td width='100%'>rtems-coverage/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ReportsBase.cc.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>rtems-coverage/ReportsBase.cc</td></tr>
</table>
<pre>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ChangeLog:1.203 gcc-testing/rtems-coverage/ChangeLog:1.204
--- gcc-testing/rtems-coverage/ChangeLog:1.203 Fri May 7 13:01:50 2010
+++ gcc-testing/rtems-coverage/ChangeLog Fri May 7 13:28:31 2010
</font><font color='#997700'>@@ -1,3 +1,7 @@
</font><font color='#000088'>+2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * ReportsBase.cc: Fix name of coverage report.
+
</font> 2010-05-07 Jennifer Averett <Jennifer.Averett>
* Makefile, ReportsBase.cc, ReportsBase.h, ReportsText.cc,
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsBase.cc:1.2 gcc-testing/rtems-coverage/ReportsBase.cc:1.3
--- gcc-testing/rtems-coverage/ReportsBase.cc:1.2 Fri May 7 13:01:51 2010
+++ gcc-testing/rtems-coverage/ReportsBase.cc Fri May 7 13:28:31 2010
</font><font color='#997700'>@@ -344,7 +344,7 @@
</font> reportName = "branch" + reports->ReportExtension();
reports->WriteBranchReport(reportName.c_str() );
<font color='#880000'>- reportName = "coverage" + reports->ReportExtension();
</font><font color='#000088'>+ reportName = "uncovered" + reports->ReportExtension();
</font> reports->WriteCoverageReport(reportName.c_str() );
reportName = "sizes" + reports->ReportExtension();
</pre>
<p> </p>
<a name='cs3'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
* do_coverage: Pick up style sheet for reports.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ChangeLog.diff?r1=text&tr1=1.204&r2=text&tr2=1.205&diff_format=h">M</a></td><td width='1%'>1.205</td><td width='100%'>rtems-coverage/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/do_coverage.diff?r1=text&tr1=1.50&r2=text&tr2=1.51&diff_format=h">M</a></td><td width='1%'>1.51</td><td width='100%'>rtems-coverage/do_coverage</td></tr>
</table>
<pre>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ChangeLog:1.204 gcc-testing/rtems-coverage/ChangeLog:1.205
--- gcc-testing/rtems-coverage/ChangeLog:1.204 Fri May 7 13:28:31 2010
+++ gcc-testing/rtems-coverage/ChangeLog Fri May 7 13:29:44 2010
</font><font color='#997700'>@@ -1,5 +1,9 @@
</font> 2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
<font color='#000088'>+ * do_coverage: Pick up style sheet for reports.
+
+2010-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
+
</font> * ReportsBase.cc: Fix name of coverage report.
2010-05-07 Jennifer Averett <Jennifer.Averett>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/do_coverage:1.50 gcc-testing/rtems-coverage/do_coverage:1.51
--- gcc-testing/rtems-coverage/do_coverage:1.50 Fri Apr 23 15:38:20 2010
+++ gcc-testing/rtems-coverage/do_coverage Fri May 7 13:29:44 2010
</font><font color='#997700'>@@ -355,7 +355,7 @@
</font> mkdir ${results_dir}
cp annotated.txt branch.txt configuration.txt sizes.txt summary.txt \
uncovered.txt row.html ${results_dir}
<font color='#880000'>- cp ${COVBASE}/Explanations.txt.NotFound ${results_dir}
</font><font color='#000088'>+ cp ${COVBASE}/Explanations.txt.NotFound ${COVBASE}/covoar.css ${results_dir}
</font> echo "Results saved in ${results_dir}.tar.bz2"
tar cjf ${results_dir}.tar.bz2 ${results_dir}
rm -rf ${results_dir}
</pre>
<p> </p>
<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>