<!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-14)</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>jennifer</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-14 Jennifer Averett <Jennifer.Averett@OARcorp.com>

        * CoverageRanges.cc, CoverageRanges.h, DesiredSymbols.cc,
        DesiredSymbols.h, ReportsBase.cc, ReportsBase.h, ReportsHtml.cc,
        ReportsHtml.h, ReportsText.cc, ReportsText.h, covoar.cc, covoar.css:
        Added an instruction count to the range information. Added method
        calculateStatistics to fill in missing statistics information.
        Modified branch stat info to include branchesExecuted and
        branchesNotExecuted. Added verbose output to report generation. Added
        heading to html 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.249&r2=text&tr2=1.250&diff_format=h">M</a></td><td width='1%'>1.250</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/CoverageRanges.h.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/CoverageRanges.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageRanges.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/CoverageRanges.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.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</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.11&r2=text&tr2=1.12&diff_format=h">M</a></td><td width='1%'>1.12</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/ReportsBase.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/ReportsBase.h</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.11&r2=text&tr2=1.12&diff_format=h">M</a></td><td width='1%'>1.12</td><td width='100%'>rtems-coverage/ReportsBase.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ReportsHtml.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/ReportsHtml.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ReportsHtml.cc.diff?r1=text&tr1=1.16&r2=text&tr2=1.17&diff_format=h">M</a></td><td width='1%'>1.17</td><td width='100%'>rtems-coverage/ReportsHtml.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ReportsText.h.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/ReportsText.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/ReportsText.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/ReportsText.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.24&r2=text&tr2=1.25&diff_format=h">M</a></td><td width='1%'>1.25</td><td width='100%'>rtems-coverage/covoar.cc</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/covoar.css.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/covoar.css</td></tr>
</table>
<pre>
<font color='#006600'>diff -u gcc-testing/rtems-coverage/ChangeLog:1.249 gcc-testing/rtems-coverage/ChangeLog:1.250
--- gcc-testing/rtems-coverage/ChangeLog:1.249  Thu May 13 12:36:16 2010
+++ gcc-testing/rtems-coverage/ChangeLog        Fri May 14 12:26:34 2010
</font><font color='#997700'>@@ -1,3 +1,14 @@
</font><font color='#000088'>+2010-05-14    Jennifer Averett <Jennifer.Averett@OARcorp.com>
+
+       * CoverageRanges.cc, CoverageRanges.h, DesiredSymbols.cc,
+       DesiredSymbols.h, ReportsBase.cc, ReportsBase.h, ReportsHtml.cc,
+       ReportsHtml.h, ReportsText.cc, ReportsText.h, covoar.cc, covoar.css:
+       Added an instruction count to the range information. Added method
+       calculateStatistics to fill in missing statistics information.
+       Modified branch stat info to include branchesExecuted and
+       branchesNotExecuted. Added verbose output to report generation. Added
+       heading to html reports.
+
</font> 2010-05-13        Jennifer Averett <Jennifer.Averett@OARcorp.com
 
        * DesiredSymbols.cc, DesiredSymbols.h, covoar.cc: Added a statistics

<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageRanges.h:1.5 gcc-testing/rtems-coverage/CoverageRanges.h:1.6
--- gcc-testing/rtems-coverage/CoverageRanges.h:1.5     Mon May 10 14:08:36 2010
+++ gcc-testing/rtems-coverage/CoverageRanges.h Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -47,6 +47,7 @@
</font>       std::string       lowSourceLine;
       uint32_t          highAddress;
       std::string       highSourceLine;
<font color='#000088'>+      uint32_t          instructionCount;
</font>       uncoveredReason_t reason;
     } coverageRange_t;
 
<font color='#997700'>@@ -77,7 +78,8 @@
</font>     void add(
       uint32_t          lowAddressArg,
       uint32_t          highAddressArg,
<font color='#880000'>-      uncoveredReason_t why
</font><font color='#000088'>+      uncoveredReason_t why,
+      uint32_t          numInstructions
</font>     );
  
 

<font color='#006600'>diff -u gcc-testing/rtems-coverage/CoverageRanges.cc:1.4 gcc-testing/rtems-coverage/CoverageRanges.cc:1.5
--- gcc-testing/rtems-coverage/CoverageRanges.cc:1.4    Mon May 10 14:08:36 2010
+++ gcc-testing/rtems-coverage/CoverageRanges.cc        Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -30,16 +30,18 @@
</font>   void CoverageRanges::add(
     uint32_t          lowAddressArg,
     uint32_t          highAddressArg,
<font color='#880000'>-    uncoveredReason_t why
</font><font color='#000088'>+    uncoveredReason_t why,
+    uint32_t          numInstructions
</font>   )
   {
     coverageRange_t c;
 
     id_m++;
<font color='#880000'>-    c.id          = id_m;
-    c.lowAddress  = lowAddressArg;
-    c.highAddress = highAddressArg;
-    c.reason      = why;
</font><font color='#000088'>+    c.id               = id_m;
+    c.lowAddress       = lowAddressArg;
+    c.highAddress      = highAddressArg;
+    c.reason           = why;
+    c.instructionCount = numInstructions;
</font>     set.push_back(c);
   }
 

<font color='#006600'>diff -u gcc-testing/rtems-coverage/DesiredSymbols.h:1.5 gcc-testing/rtems-coverage/DesiredSymbols.h:1.6
--- gcc-testing/rtems-coverage/DesiredSymbols.h:1.5     Thu May 13 12:36:17 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.h Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -37,9 +37,10 @@
</font>     int branchesAlwaysTaken;
 
     /*!
<font color='#880000'>-     *  This member variable contains the total number of branches found.
</font><font color='#000088'>+     *  This member variable contains the total number of branches where<span style="background-color: #FF0000"> </span>
+     *  one or more paths were executed.
</font>      */
<font color='#880000'>-    int branchesFound;
</font><font color='#000088'>+    int branchesExecuted;
</font> 
     /*!
      *  This member variable contains the total number of branches never
<font color='#997700'>@@ -48,6 +49,12 @@
</font>     int branchesNeverTaken;
 
     /*!
<font color='#000088'>+     *  This member variable contains the total number of branches not
+     *  executed AT ALL.
+     */
+    int branchesNotExecuted;
+
+    /*!
</font>      *  This member contains the size in Bytes.
      */
     uint32_t sizeInBytes;
<font color='#997700'>@@ -92,8 +99,9 @@
</font>      */<span style="background-color: #FF0000">   </span>
      Statistics():
        branchesAlwaysTaken(0),
<font color='#880000'>-       branchesFound(0),
</font><font color='#000088'>+       branchesExecuted(0),
</font>        branchesNeverTaken(0),
<font color='#000088'>+       branchesNotExecuted(0),
</font>        sizeInBytes(0),
        sizeInInstructions(0),
        uncoveredBytes(0),
<font color='#997700'>@@ -102,8 +110,6 @@
</font>      {
      }
 
<font color='#880000'>-
-<span style="background-color: #FF0000">      </span>
</font>   };
 
   /*! @class SymbolInformation
<font color='#997700'>@@ -194,6 +200,13 @@
</font>     ~DesiredSymbols();
 
     /*!
<font color='#000088'>+     *  This method loops through the coverage map and
+     *  calculates the statistics that have not already<span style="background-color: #FF0000"> </span>
+     *  been filled in.
+     */
+    void caculateStatistics( void );
+
+    /*!
</font>      *  This method analyzes each symbols coverage map to determine any
      *  uncovered ranges or branches.
      */

<font color='#006600'>diff -u gcc-testing/rtems-coverage/DesiredSymbols.cc:1.11 gcc-testing/rtems-coverage/DesiredSymbols.cc:1.12
--- gcc-testing/rtems-coverage/DesiredSymbols.cc:1.11   Thu May 13 12:36:16 2010
+++ gcc-testing/rtems-coverage/DesiredSymbols.cc        Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -132,10 +132,71 @@
</font>     }
   }
 
<font color='#000088'>+  void DesiredSymbols::caculateStatistics( void )
+  {
+    uint32_t                              a;
+    uint32_t                              endAddress;
+    DesiredSymbols::symbolSet_t::iterator sitr;
+    CoverageMapBase*                      theCoverageMap;
+
+    // Look at each symbol.
+    for (sitr = SymbolsToAnalyze->set.begin();
+         sitr != SymbolsToAnalyze->set.end();
+         sitr++) {
+
+      // If the unified coverage map does not exist, the symbol was
+      // never referenced by any executable.  Just skip it.
+      theCoverageMap = sitr->second.unifiedCoverageMap;
+      if (!theCoverageMap)
+        continue;
+
+      // Increment the total sizeInBytes byt the bytes in the symbol
+      stats.sizeInBytes += sitr->second.stats.sizeInBytes;
+
+      // Now scan through the coverage map of this symbol.
+      endAddress = sitr->second.stats.sizeInBytes - 1;
+      a = 0;
+      while (a <= endAddress) {
+
+        // If we are at the start of instruction increment
+        // instruction type counters as needed.<span style="background-color: #FF0000"> </span>
+        if ( theCoverageMap->isStartOfInstruction( a ) ) {
+
+          stats.sizeInInstructions++;
+          sitr->second.stats.sizeInInstructions++;
+
+          if (!theCoverageMap->wasExecuted( a ) ) {
+            stats.uncoveredInstructions++;
+            sitr->second.stats.uncoveredInstructions++;
+
+            if ( theCoverageMap->isBranch( a )) {
+              stats.branchesNotExecuted++;
+              sitr->second.stats.branchesNotExecuted++;
+             }
+          } else if (theCoverageMap->isBranch( a )) {
+            stats.branchesExecuted++;
+            sitr->second.stats.branchesExecuted++;
+          }
+<span style="background-color: #FF0000"> </span>
+        }
+
+<span style="background-color: #FF0000"> </span>
+        if (!theCoverageMap->wasExecuted( a )) {
+          stats.uncoveredBytes++;
+          sitr->second.stats.uncoveredBytes++;
+        }<span style="background-color: #FF0000">       </span>
+        a++;
+
+      }
+    }
+  }
+
+
</font>   void DesiredSymbols::computeUncovered( void )
   {
     uint32_t                              a, la, ha;
     uint32_t                              endAddress;
<font color='#000088'>+    uint32_t                              count;
</font>     DesiredSymbols::symbolSet_t::iterator sitr;
     CoverageRanges*                       theBranches;
     CoverageMapBase*                      theCoverageMap;
<font color='#997700'>@@ -162,22 +223,29 @@
</font>       endAddress = sitr->second.stats.sizeInBytes - 1;
       a = 0;
       while (a <= endAddress) {
<font color='#880000'>-
</font><font color='#000088'>+<span style="background-color: #FF0000">        </span>
</font>         // If an address was NOT executed, find consecutive unexecuted
         // addresses and add them to the uncovered ranges.
         if (!theCoverageMap->wasExecuted( a )) {
<font color='#000088'>+
</font>           la = a;
<font color='#000088'>+          count = 1;
</font>           for (ha=a+1;
                ha<=endAddress && !theCoverageMap->wasExecuted( ha );
                ha++)
<font color='#880000'>-            ;
</font><font color='#000088'>+          {
+            if ( theCoverageMap->isStartOfInstruction( ha ) )
+              count++;
+          }
</font>           ha--;
 
           stats.uncoveredRanges++;
<font color='#000088'>+          sitr->second.stats.uncoveredRanges++;
</font>           theRanges->add(
             sitr->second.baseAddress + la,
             sitr->second.baseAddress + ha,
<font color='#880000'>-            CoverageRanges::UNCOVERED_REASON_NOT_EXECUTED
</font><font color='#000088'>+            CoverageRanges::UNCOVERED_REASON_NOT_EXECUTED,
+            count
</font>           );
           a = ha + 1;
         }
<font color='#997700'>@@ -185,7 +253,6 @@
</font>         // If an address is a branch instruction, add any uncovered branches
         // to the uncoverd branches.
         else if (theCoverageMap->isBranch( a )) {
<font color='#880000'>-          stats.branchesFound++;
</font>           la = a;
           for (ha=a+1;
                ha<=endAddress && !theCoverageMap->isStartOfInstruction( ha );
<font color='#997700'>@@ -195,10 +262,12 @@
</font> 
           if (theCoverageMap->wasAlwaysTaken( la )) {
             stats.branchesAlwaysTaken++;
<font color='#000088'>+            sitr->second.stats.branchesAlwaysTaken++;
</font>             theBranches->add(
               sitr->second.baseAddress + la,
               sitr->second.baseAddress + ha,
<font color='#880000'>-              CoverageRanges::UNCOVERED_REASON_BRANCH_ALWAYS_TAKEN
</font><font color='#000088'>+              CoverageRanges::UNCOVERED_REASON_BRANCH_ALWAYS_TAKEN,
+              1
</font>             );
             if (Verbose)
               fprintf(
<font color='#997700'>@@ -212,10 +281,12 @@
</font> 
           else if (theCoverageMap->wasNeverTaken( la )) {
             stats.branchesNeverTaken++;
<font color='#000088'>+            sitr->second.stats.branchesNeverTaken++;
</font>             theBranches->add(
               sitr->second.baseAddress + la,
               sitr->second.baseAddress + ha,
<font color='#880000'>-              CoverageRanges::UNCOVERED_REASON_BRANCH_NEVER_TAKEN
</font><font color='#000088'>+              CoverageRanges::UNCOVERED_REASON_BRANCH_NEVER_TAKEN,
+              1
</font>             );
             if (Verbose)
               fprintf(
<font color='#997700'>@@ -234,6 +305,7 @@
</font>     }
   }
 
<font color='#000088'>+
</font>   void DesiredSymbols::createCoverageMap(
     const std::string& symbolName,
     uint32_t           size
<font color='#997700'>@@ -480,7 +552,7 @@
</font>   };
 
   uint32_t DesiredSymbols::getNumberBranchesFound( void ) const {
<font color='#880000'>-    return stats.branchesFound;
</font><font color='#000088'>+    return (stats.branchesNotExecuted + stats.branchesExecuted);
</font>   };
 
   uint32_t DesiredSymbols::getNumberBranchesNeverTaken( void ) const {

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsBase.h:1.8 gcc-testing/rtems-coverage/ReportsBase.h:1.9
--- gcc-testing/rtems-coverage/ReportsBase.h:1.8        Wed May 12 13:12:36 2010
+++ gcc-testing/rtems-coverage/ReportsBase.h    Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -314,8 +314,7 @@
</font>     virtual bool PutSymbolSummaryLine(
       FILE*                                           report,
       unsigned int                                    number,
<font color='#880000'>-      Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
-      Coverage::CoverageRanges::ranges_t::iterator    range
</font><font color='#000088'>+      Coverage::DesiredSymbols::symbolSet_t::iterator symbol
</font>     )=0;
 };
 

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsBase.cc:1.11 gcc-testing/rtems-coverage/ReportsBase.cc:1.12
--- gcc-testing/rtems-coverage/ReportsBase.cc:1.11      Thu May 13 09:18:07 2010
+++ gcc-testing/rtems-coverage/ReportsBase.cc   Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -373,7 +373,6 @@
</font> {
   Coverage::DesiredSymbols::symbolSet_t::iterator ditr;
   FILE*                                           report;
<font color='#880000'>-  Coverage::CoverageRanges::ranges_t::iterator    ritr;
</font>   Coverage::CoverageRanges*                       theRanges;
   unsigned int                                    count;
 
<font color='#997700'>@@ -383,23 +382,14 @@
</font>     return;
   }
 
<font color='#880000'>-  // Process uncovered ranges for each symbol.
</font><font color='#000088'>+  // Process each symbol.
</font>   count = 0;
   for (ditr = SymbolsToAnalyze->set.begin();
        ditr != SymbolsToAnalyze->set.end();
        ditr++) {
 
<font color='#880000'>-    theRanges = ditr->second.uncoveredRanges;
-
-    if (theRanges && !theRanges->set.empty()) {
-
-      for (ritr =  theRanges->set.begin() ;
-           ritr != theRanges->set.end() ;
-           ritr++ ) {
-        PutSymbolSummaryLine( report, count, ditr, ritr );
-        count++;
-      }
-    }
</font><font color='#000088'>+    PutSymbolSummaryLine( report, count, ditr );
+    count++;
</font>   }
 
   CloseSymbolSummaryFile( report );
<font color='#997700'>@@ -423,21 +413,45 @@
</font>     reports = *ritr;
 
     reportName = "index" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteIndex( reportName.c_str() );
 
     reportName = "annotated" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteAnnotatedReport( reportName.c_str() );
 
     reportName = "branch" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteBranchReport(reportName.c_str() );
 
     reportName = "uncovered" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteCoverageReport(reportName.c_str() );
 
     reportName = "sizes" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteSizeReport(reportName.c_str() );
 
     reportName = "symbolSummary" + reports->ReportExtension();
<font color='#000088'>+    if (Verbose)
+      fprintf(
+        stderr, "Generate %s\n", reportName.c_str()
+      );
</font>     reports->WriteSymbolSummaryReport(reportName.c_str() );
   }
 

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsHtml.h:1.8 gcc-testing/rtems-coverage/ReportsHtml.h:1.9
--- gcc-testing/rtems-coverage/ReportsHtml.h:1.8        Wed May 12 14:22:17 2010
+++ gcc-testing/rtems-coverage/ReportsHtml.h    Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -151,8 +151,7 @@
</font>     virtual bool PutSymbolSummaryLine(
       FILE*                                           report,
       unsigned int                                    number,
<font color='#880000'>-      Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
-      Coverage::CoverageRanges::ranges_t::iterator    range
</font><font color='#000088'>+      Coverage::DesiredSymbols::symbolSet_t::iterator symbol
</font>     );
 
     virtual FILE* OpenFile(

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsHtml.cc:1.16 gcc-testing/rtems-coverage/ReportsHtml.cc:1.17
--- gcc-testing/rtems-coverage/ReportsHtml.cc:1.16      Thu May 13 09:18:07 2010
+++ gcc-testing/rtems-coverage/ReportsHtml.cc   Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -100,7 +100,6 @@
</font>       "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=us-ascii\" >\n"
       "<link rel=\"stylesheet\" type=\"text/css\" href=\"covoar.css\" media=\"screen\" >\n"
       "<script type=\"text/javascript\" src=\"table.js\"></script>\n"
<font color='#880000'>-      "<body>\n"
</font>     );
 
     return aFile;
<font color='#997700'>@@ -117,6 +116,8 @@
</font> 
     fprintf(
       aFile,
<font color='#000088'>+      "<pre class=\"heading-title\">Annotated Report</pre>\n"
+      "<body>\n"
</font>       "<pre class=\"code\">\n"
     );
 
<font color='#997700'>@@ -137,7 +138,9 @@
</font>       // Put header information into the file
       fprintf(
         aFile,
<font color='#880000'>-        "<table class=\"covoar table-autosort:0 table-autofilter"
</font><font color='#000088'>+        "<pre class=\"heading-title\">Branch Report</pre>\n"
+        "<body>\n"
+         "<table class=\"covoar table-autosort:0 table-autofilter"
</font>            TABLE_HEADER_CLASS "\">\n"
         "<thead>\n"
         "<tr>\n"
<font color='#997700'>@@ -168,6 +171,8 @@
</font>     // Put header information into the file
     fprintf(
       aFile,
<font color='#000088'>+        "<pre class=\"heading-title\">Coverage Report</pre>\n"
+        "<body>\n"
</font>       "<table class=\"covoar table-autosort:0 table-autofilter"
            TABLE_HEADER_CLASS "\">\n"
       "<thead>\n"
<font color='#997700'>@@ -197,6 +202,8 @@
</font>     // Put header information into the file
     fprintf(
       aFile,
<font color='#000088'>+      "<pre class=\"heading-title\">Size Report</pre>\n"
+      "<body>\n"
</font>       "<table class=\"covoar table-autosort:0 table-autofilter"
            TABLE_HEADER_CLASS "\">\n"
       "<thead>\n"
<font color='#997700'>@@ -222,6 +229,8 @@
</font>     // Put header information into the file
     fprintf(
       aFile,
<font color='#000088'>+      "<pre class=\"heading-title\">Symbol Summary Report</pre>\n"
+      "<body>\n"
</font>       "<table class=\"covoar table-autosort:0 table-autofilter"
            TABLE_HEADER_CLASS "\">\n"
       "<thead>\n"
<font color='#997700'>@@ -359,7 +368,8 @@
</font>     // Size in instructions
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      rangePtr->instructionCount
</font>     );<span style="background-color: #FF0000"> </span>
 
     // Reason Branch was uncovered
<font color='#997700'>@@ -527,7 +537,8 @@
</font>     // Size in instructions
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      rangePtr->instructionCount
</font>     );<span style="background-color: #FF0000"> </span>
 
     // See if an explanation is available
<font color='#997700'>@@ -603,10 +614,10 @@
</font>   bool  ReportsHtml::PutSymbolSummaryLine(
     FILE*                                           report,
     unsigned int                                    count,
<font color='#880000'>-    Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
-    Coverage::CoverageRanges::ranges_t::iterator    range
</font><font color='#000088'>+    Coverage::DesiredSymbols::symbolSet_t::iterator symbol
</font>   )
   {
<font color='#000088'>+<span style="background-color: #FF0000"> </span>
</font>     // Mark the background color different for odd and even lines.
     if ( ( count%2 ) == 0 )
       fprintf( report, "<tr class=\"covoar-tr covoar-tr-even\">\n");
<font color='#997700'>@@ -623,65 +634,86 @@
</font>     // Total Size in Bytes
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      symbol->second.stats.sizeInBytes
</font>     );
 
     // Total Size in Instructions<span style="background-color: #FF0000"> </span>
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      symbol->second.stats.sizeInInstructions
</font>     );
 
     // Total Uncovered Ranges
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
       "<td class=\"covoar-td\" align=\"center\">%d</td>\n",<span style="background-color: #FF0000">     </span>
<font color='#880000'>-      symbol->second.uncoveredRanges->set.size()
</font><font color='#000088'>+      symbol->second.stats.uncoveredRanges
</font>     );
 
     // Uncovered Size in Bytes
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      symbol->second.stats.uncoveredBytes
</font>     );
 
     // Uncovered Size in Instructions<span style="background-color: #FF0000"> </span>
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+       symbol->second.stats.uncoveredInstructions
</font>     );
 
     // Total number of branches
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
       "<td class=\"covoar-td\" align=\"center\">%d</td>\n",<span style="background-color: #FF0000">     </span>
<font color='#880000'>-      symbol->second.uncoveredBranches->set.size()
</font><font color='#000088'>+      symbol->second.stats.branchesNotExecuted +  symbol->second.stats.branchesExecuted
</font>     );
 
     // Total Always Taken
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      symbol->second.stats.branchesAlwaysTaken
</font>     );
 
     // Total Never Taken
     fprintf(<span style="background-color: #FF0000"> </span>
       report,<span style="background-color: #FF0000"> </span>
<font color='#880000'>-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
-    );
-
</font><font color='#000088'>+      "<td class=\"covoar-td\" align=\"center\">%d</td>\n",
+      symbol->second.stats.branchesNeverTaken
+     );
</font> 
<font color='#880000'>-    // % Uncovered Instructions<span style="background-color: #FF0000"> </span>
-    fprintf(<span style="background-color: #FF0000"> </span>
-      report,<span style="background-color: #FF0000"> </span>
-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
-    );
</font><font color='#000088'>+    // % Uncovered Instructions
+    if ( symbol->second.stats.sizeInInstructions == 0 )
+      fprintf(<span style="background-color: #FF0000"> </span>
+        report,<span style="background-color: #FF0000"> </span>
+        "<td class=\"covoar-td\" align=\"center\">N/A</td>\n"
+      );
+    else<span style="background-color: #FF0000">     </span>
+      fprintf(<span style="background-color: #FF0000"> </span>
+        report,<span style="background-color: #FF0000"> </span>
+        "<td class=\"covoar-td\" align=\"center\">%.2f</td>\n",
+        (symbol->second.stats.uncoveredInstructions*100.0)/
+         symbol->second.stats.sizeInInstructions
+      );
</font> 
     // % Uncovered Bytes
<font color='#880000'>-    fprintf(<span style="background-color: #FF0000"> </span>
-      report,<span style="background-color: #FF0000"> </span>
-      "<td class=\"covoar-td\" align=\"center\">XXX</td>\n"
-    );
</font><font color='#000088'>+    if ( symbol->second.stats.sizeInBytes == 0 )
+      fprintf(<span style="background-color: #FF0000"> </span>
+        report,<span style="background-color: #FF0000"> </span>
+        "<td class=\"covoar-td\" align=\"center\">N/A</td>\n"
+      );
+    else<span style="background-color: #FF0000">     </span>
+      fprintf(<span style="background-color: #FF0000"> </span>
+        report,<span style="background-color: #FF0000"> </span>
+        "<td class=\"covoar-td\" align=\"center\">%.2f</td>\n",
+        (symbol->second.stats.uncoveredBytes*100.0)/
+         symbol->second.stats.sizeInBytes
+      );
</font> 
     fprintf( report, "</tr>\n");
     return true;

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsText.h:1.5 gcc-testing/rtems-coverage/ReportsText.h:1.6
--- gcc-testing/rtems-coverage/ReportsText.h:1.5        Wed May 12 13:12:36 2010
+++ gcc-testing/rtems-coverage/ReportsText.h    Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -97,8 +97,7 @@
</font>     virtual bool PutSymbolSummaryLine(
       FILE*                                           report,
       unsigned int                                    number,
<font color='#880000'>-      Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
-      Coverage::CoverageRanges::ranges_t::iterator    range
</font><font color='#000088'>+      Coverage::DesiredSymbols::symbolSet_t::iterator symbol
</font>     );
 
 };

<font color='#006600'>diff -u gcc-testing/rtems-coverage/ReportsText.cc:1.5 gcc-testing/rtems-coverage/ReportsText.cc:1.6
--- gcc-testing/rtems-coverage/ReportsText.cc:1.5       Wed May 12 11:14:16 2010
+++ gcc-testing/rtems-coverage/ReportsText.cc   Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -206,19 +206,11 @@
</font> }
 
 bool  ReportsText::PutSymbolSummaryLine(
<font color='#880000'>-  FILE*                                      report,
-  unsigned int                                     number,
-  Coverage::DesiredSymbols::symbolSet_t::iterator symbol,
-  Coverage::CoverageRanges::ranges_t::iterator    range
</font><font color='#000088'>+  FILE*                                           report,
+  unsigned int                                    number,
+  Coverage::DesiredSymbols::symbolSet_t::iterator symbol
</font> )
 {
<font color='#880000'>-  fprintf(
-    report,
-    "%d\t%s\t%s\n",
-    range->highAddress - range->lowAddress + 1,
-    symbol->first.c_str(),
-    range->lowSourceLine.c_str()
-  );
</font>   return true;
 }
 

<font color='#006600'>diff -u gcc-testing/rtems-coverage/covoar.cc:1.24 gcc-testing/rtems-coverage/covoar.cc:1.25
--- gcc-testing/rtems-coverage/covoar.cc:1.24   Thu May 13 12:36:17 2010
+++ gcc-testing/rtems-coverage/covoar.cc        Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -350,6 +350,11 @@
</font>     fprintf( stderr, "Computing uncovered ranges and branches\n" );
   SymbolsToAnalyze->computeUncovered();
 
<font color='#000088'>+  // Calculate remainder of statistics.
+  if (Verbose)
+    fprintf( stderr, "Calculate statistics\n" );
+  SymbolsToAnalyze->caculateStatistics();
+
</font>   // Look up the source lines for any uncovered ranges and branches.
   if (Verbose)
     fprintf(
<font color='#997700'>@@ -360,6 +365,10 @@
</font>   //
   // Report the coverage data.
   //
<font color='#000088'>+  if (Verbose)
+    fprintf(
+      stderr, "Generate Reports\n"
+    );
</font>   Coverage::GenerateReports();
 
   // Write explanations that were not found.

<font color='#006600'>diff -u gcc-testing/rtems-coverage/covoar.css:1.2 gcc-testing/rtems-coverage/covoar.css:1.3
--- gcc-testing/rtems-coverage/covoar.css:1.2   Wed May 12 13:11:21 2010
+++ gcc-testing/rtems-coverage/covoar.css       Fri May 14 12:26:35 2010
</font><font color='#997700'>@@ -224,8 +224,9 @@
</font> .heading-title {
     text-align:  center;
     color: rgb(0,0,0);
<font color='#880000'>-    font-size: 0.9em;
</font><font color='#000088'>+    font-size: 4.0em;
</font>     font-weight: bold;
<font color='#000088'>+    line-height: 0.9;
</font>     padding-top: 5px;
     padding-left: 0px;
     text-align:  center;
</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>