change log for gcc-testing (2010-05-11)

rtems-vc at rtems.org rtems-vc at rtems.org
Tue May 11 20:10:03 UTC 2010


 *joel*:
2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>

	* CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
	covoar.cc: Now properly know when a trace or coverage format includes
	or does not include branch information.

M  1.217  rtems-coverage/ChangeLog
M   1.13  rtems-coverage/CoverageReaderQEMU.cc
M    1.6  rtems-coverage/ReportsBase.cc
M    1.8  rtems-coverage/app_common.h
M    1.4  rtems-coverage/app_common.cc
M   1.17  rtems-coverage/covoar.cc

diff -u gcc-testing/rtems-coverage/ChangeLog:1.216 gcc-testing/rtems-coverage/ChangeLog:1.217
--- gcc-testing/rtems-coverage/ChangeLog:1.216	Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/ChangeLog	Tue May 11 14:44:52 2010
@@ -1,5 +1,11 @@
 2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>
 
+	* CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
+	covoar.cc: Now properly know when a trace or coverage format includes
+	or does not include branch information.
+
+2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>
+
 	* DesiredSymbols.cc: Remove range1.tmp and ranges2.tmp.
 	* ReportsBase.cc, app_common.cc, covoar.cc, do_coverage: Generate
 	files into user specified output directory.

diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.12 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.12	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc	Tue May 11 14:44:52 2010
@@ -13,6 +13,7 @@
 #include <stdlib.h>
 #include <sys/stat.h>
 
+#include "app_common.h"
 #include "CoverageReaderQEMU.h"
 #include "CoverageMap.h"
 #include "ExecutableInfo.h"
@@ -35,6 +36,7 @@
 
   CoverageReaderQEMU::CoverageReaderQEMU()
   {
+    BranchInfoAvailable = true;
   }
 
   CoverageReaderQEMU::~CoverageReaderQEMU()

diff -u gcc-testing/rtems-coverage/ReportsBase.cc:1.5 gcc-testing/rtems-coverage/ReportsBase.cc:1.6
--- gcc-testing/rtems-coverage/ReportsBase.cc:1.5	Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/ReportsBase.cc	Tue May 11 14:44:52 2010
@@ -220,15 +220,16 @@
 
   // Open the branch report file
   report = OpenBranchFile( fileName );
+
   if (!report)
     return;
 
-  // If no branches were found, then branch coverage is not supported
-  if (SymbolsToAnalyze->getNumberBranchesFound() == 0)
+  // If no branches were found of branch coverage is not supported
+  if ((SymbolsToAnalyze->getNumberBranchesFound() == 0) || 
+      (BranchInfoAvailable == false) ) {
     PutNoBranchInfo(report);
-
-  // If branches were found, ...
-  else {
+    // If branches were found, ...
+  } else {
 
     // Process uncovered branches for each symbol.
     count = 0;

diff -u gcc-testing/rtems-coverage/app_common.h:1.7 gcc-testing/rtems-coverage/app_common.h:1.8
--- gcc-testing/rtems-coverage/app_common.h:1.7	Mon May 10 14:31:11 2010
+++ gcc-testing/rtems-coverage/app_common.h	Tue May 11 14:44:52 2010
@@ -17,6 +17,7 @@
 extern Coverage::Toolnames*         Tools;
 extern bool                         Verbose;
 extern const char*                  outputDirectory;
+extern bool                         BranchInfoAvailable;
 
 bool FileIsNewer( const char *f1, const char *f2 ); 
 bool ReadUntilFound( FILE *file, const char *line );

diff -u gcc-testing/rtems-coverage/app_common.cc:1.3 gcc-testing/rtems-coverage/app_common.cc:1.4
--- gcc-testing/rtems-coverage/app_common.cc:1.3	Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/app_common.cc	Tue May 11 14:44:52 2010
@@ -17,12 +17,13 @@
 /*
  *  Global variables for the program
  */
-Coverage::Explanations*     AllExplanations  = NULL;
-Coverage::ObjdumpProcessor* objdumpProcessor = NULL;
-Coverage::DesiredSymbols*   SymbolsToAnalyze = NULL;
-Coverage::Toolnames*        Tools            = NULL;
-bool                        Verbose          = false;
-const char*                 outputDirectory = ".";
+Coverage::Explanations*     AllExplanations     = NULL;
+Coverage::ObjdumpProcessor* objdumpProcessor    = NULL;
+Coverage::DesiredSymbols*   SymbolsToAnalyze    = NULL;
+Coverage::Toolnames*        Tools               = NULL;
+bool                        Verbose             = false;
+const char*                 outputDirectory     = ".";
+bool                        BranchInfoAvailable = false;
 
 bool FileIsNewer( const char *f1, const char *f2 ) {
   struct stat buf1, buf2;

diff -u gcc-testing/rtems-coverage/covoar.cc:1.16 gcc-testing/rtems-coverage/covoar.cc:1.17
--- gcc-testing/rtems-coverage/covoar.cc:1.16	Tue May 11 13:17:33 2010
+++ gcc-testing/rtems-coverage/covoar.cc	Tue May 11 14:44:52 2010
@@ -421,9 +421,10 @@
       "Uncovered ranges found   : %d\n",
       SymbolsToAnalyze->getNumberUncoveredRanges()
     );
-    if (SymbolsToAnalyze->getNumberBranchesFound() == 0)
-      printf( "MAIN No branch information found\n" );
-    else {
+    if ((SymbolsToAnalyze->getNumberBranchesFound() == 0) || 
+        (BranchInfoAvailable == false) ) {
+      printf( "No branch information available\n" );
+    } else {
       printf(
         "Total branches found     : %d\n",
         SymbolsToAnalyze->getNumberBranchesFound()


 *joel*:
2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>

	* CoverageReaderQEMU.cc, ObjdumpProcessor.cc, ObjdumpProcessor.h,
	TargetBase.cc, TargetBase.h, TraceConverter.cc, TraceWriterQEMU.cc,
	app_common.cc, app_common.h, covoar.cc, qemu-traces.h: Allow each
	Qemu target architecture to define its own taken and not taken bits.

M  1.218  rtems-coverage/ChangeLog
M   1.14  rtems-coverage/CoverageReaderQEMU.cc
M   1.10  rtems-coverage/ObjdumpProcessor.h
M   1.30  rtems-coverage/ObjdumpProcessor.cc
M    1.3  rtems-coverage/TargetBase.h
M    1.5  rtems-coverage/TargetBase.cc
M    1.6  rtems-coverage/TraceConverter.cc
M    1.2  rtems-coverage/TraceWriterQEMU.cc
M    1.9  rtems-coverage/app_common.h
M    1.5  rtems-coverage/app_common.cc
M   1.18  rtems-coverage/covoar.cc
M    1.3  rtems-coverage/qemu-traces.h

diff -u gcc-testing/rtems-coverage/ChangeLog:1.217 gcc-testing/rtems-coverage/ChangeLog:1.218
--- gcc-testing/rtems-coverage/ChangeLog:1.217	Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/ChangeLog	Tue May 11 15:09:19 2010
@@ -1,5 +1,12 @@
 2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>
 
+	* CoverageReaderQEMU.cc, ObjdumpProcessor.cc, ObjdumpProcessor.h,
+	TargetBase.cc, TargetBase.h, TraceConverter.cc, TraceWriterQEMU.cc,
+	app_common.cc, app_common.h, covoar.cc, qemu-traces.h: Allow each
+	Qemu target architecture to define its own taken and not taken bits.
+
+2010-05-11	Joel Sherrill <joel.sherrilL at OARcorp.com>
+
 	* CoverageReaderQEMU.cc, ReportsBase.cc, app_common.cc, app_common.h,
 	covoar.cc: Now properly know when a trace or coverage format includes
 	or does not include branch information.

diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.14
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.13	Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc	Tue May 11 15:09:19 2010
@@ -18,9 +18,6 @@
 #include "CoverageMap.h"
 #include "ExecutableInfo.h"
 
-/* XXX really not always right */
-typedef uint32_t target_ulong;
-
 #include "qemu-traces.h"
 
 /* hack so this can compile on the RH7 RTEMS 4.5 host */
@@ -53,6 +50,13 @@
     struct STAT         statbuf;
     int                 status;
     FILE*               traceFile;
+    uint8_t             taken;
+    uint8_t             notTaken;
+    uint8_t             branchInfo;
+
+    taken    = TargetInfo->qemuTakenBit();
+    notTaken = TargetInfo->qemuNotTakenBit();
+    branchInfo = taken | notTaken;
 
     //
     // Verify that the coverage file has a non-zero size.
@@ -145,13 +149,13 @@
         }
 
         // Determine if additional branch information is available.
-       if ( (entry->op & (TRACE_OP_TAKEN|TRACE_OP_NOT_TAKEN)) != 0 ) {
+       if ( (entry->op & branchInfo) != 0 ) {
           unsigned int a = entry->pc + entry->size - 1;
           while (!aCoverageMap->isStartOfInstruction(a))
             a--;
-          if (entry->op & TRACE_OP_TAKEN) {
+          if (entry->op & taken) {
             aCoverageMap->setWasTaken( a );
-          } else if (entry->op & TRACE_OP_NOT_TAKEN) {
+          } else if (entry->op & notTaken) {
 	    aCoverageMap->setWasNotTaken( a );
           }
 	}

diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.9 gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.10
--- gcc-testing/rtems-coverage/ObjdumpProcessor.h:1.9	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.h	Tue May 11 15:09:19 2010
@@ -134,7 +134,6 @@
   private:
 
     objdumpFile_t       objdumpList;
-    Target::TargetBase* target_m;
 
     /*!
      *  This method determines whether the specified line is a

diff -u gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.29 gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.30
--- gcc-testing/rtems-coverage/ObjdumpProcessor.cc:1.29	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/ObjdumpProcessor.cc	Tue May 11 15:09:19 2010
@@ -17,8 +17,8 @@
 #include <string.h>
 #include <algorithm>
 
-#include "ObjdumpProcessor.h"
 #include "app_common.h"
+#include "ObjdumpProcessor.h"
 #include "CoverageMap.h"
 #include "ExecutableInfo.h"
 #include "SymbolTable.h"
@@ -76,7 +76,6 @@
 
   ObjdumpProcessor::ObjdumpProcessor()
   {
-    target_m = Target::TargetFactory(Tools->getTarget());
   }
 
   ObjdumpProcessor::~ObjdumpProcessor()
@@ -87,26 +86,26 @@
     const char *instruction 
   )
   { 
-    if (!target_m) {
+    if ( !TargetInfo ) {
       fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
       assert(0);
       return false;
     }
 
-    return target_m->isBranch( instruction );
+    return TargetInfo->isBranch( instruction );
   }
 
   bool ObjdumpProcessor::isBranchLine(
     const char* const line
   )
   {
-    if (!target_m) {
+    if ( !TargetInfo ) {
       fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
       assert(0);
       return false;
     }
 
-    return  target_m->isBranchLine( line );
+    return  TargetInfo->isBranchLine( line );
   }
 
   bool ObjdumpProcessor::isNop(
@@ -115,14 +114,14 @@
   )
   {
 
-    if (!target_m){
+    if ( !TargetInfo ){
       fprintf( stderr, "ERROR!!! unknown architecture!!!\n");
       fprintf( stderr, "HOW LARGE IS NOP ON THIS ARCHITECTURE? -- fix me\n" );
       assert(0);
       return false;
     }
 
-    return target_m->isNopLine( line, size );
+    return TargetInfo->isNopLine( line, size );
   }
 
   FILE* ObjdumpProcessor::getFile( 

diff -u gcc-testing/rtems-coverage/TargetBase.h:1.2 gcc-testing/rtems-coverage/TargetBase.h:1.3
--- gcc-testing/rtems-coverage/TargetBase.h:1.2	Thu Apr 29 14:12:31 2010
+++ gcc-testing/rtems-coverage/TargetBase.h	Tue May 11 15:09:19 2010
@@ -13,15 +13,15 @@
 
 #include <list>
 #include <string>
-
+#include <stdint.h>
 
 namespace Target {
 
   /*! @class TargetBase
    *
    *  This class is the base class for all Target classes.  Each
-   *  target class contains routines that are specific to the target in question.
-   *
+   *  target class contains routines that are specific to the target
+   *  in question.
    */
   class TargetBase {
 
@@ -74,6 +74,18 @@
       const char* const instruction
     );
 
+    /*!
+     *  This method returns the bit set by Qemu in the trace record
+     *  when a branch is taken.
+     */
+    virtual uint8_t qemuTakenBit(void);
+
+    /*!
+     *  This method returns the bit set by Qemu in the trace record
+     *  when a branch is taken.
+     */
+    virtual uint8_t qemuNotTakenBit(void);
+
   protected:
 
     /*!

diff -u gcc-testing/rtems-coverage/TargetBase.cc:1.4 gcc-testing/rtems-coverage/TargetBase.cc:1.5
--- gcc-testing/rtems-coverage/TargetBase.cc:1.4	Mon May 10 09:07:35 2010
+++ gcc-testing/rtems-coverage/TargetBase.cc	Tue May 11 15:09:19 2010
@@ -8,7 +8,10 @@
  *  This file contains the implementation of the base class for 
  *  functions supporting target unique functionallity.
  */
+
 #include "TargetBase.h"
+#include "qemu-traces.h"
+
 #include <algorithm>
 #include <stdio.h>
 
@@ -25,7 +28,6 @@
   {
   }
 
-
   bool TargetBase::isBranch(
       const char* const instruction
   )
@@ -90,4 +92,15 @@
 
     return isBranch( instruction );
   }
+
+  uint8_t TargetBase::qemuTakenBit(void)
+  {
+    return TRACE_OP_BR0;
+  }
+
+  uint8_t TargetBase::qemuNotTakenBit(void)
+  {
+    return TRACE_OP_BR1;
+  }
+
 }

diff -u gcc-testing/rtems-coverage/TraceConverter.cc:1.5 gcc-testing/rtems-coverage/TraceConverter.cc:1.6
--- gcc-testing/rtems-coverage/TraceConverter.cc:1.5	Mon Apr 26 12:23:36 2010
+++ gcc-testing/rtems-coverage/TraceConverter.cc	Tue May 11 15:09:19 2010
@@ -22,6 +22,7 @@
 #include "ObjdumpProcessor.h"
 #include "Toolnames.h"
 #include "app_common.h"
+#include "TargetFactory.h"
 
 char *progname;
 
@@ -82,6 +83,7 @@
 
   // Create toolnames.
   Tools = new Coverage::Toolnames( cpuname );
+  TargetInfo = Target::TargetFactory( cpuname );
 
   objdumpProcessor = new Coverage::ObjdumpProcessor();
  

diff -u gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.1 gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.2
--- gcc-testing/rtems-coverage/TraceWriterQEMU.cc:1.1	Fri Apr 23 13:57:18 2010
+++ gcc-testing/rtems-coverage/TraceWriterQEMU.cc	Tue May 11 15:09:19 2010
@@ -51,6 +51,11 @@
     struct trace_header header;
     int                 status;
     FILE*               traceFile;
+    uint8_t             taken;
+    uint8_t             notTaken;
+
+    taken    = TargetInfo->qemuTakenBit();
+    notTaken = TargetInfo->qemuNotTakenBit();
 
     //
     // Verify that the TraceList has a non-zero size.
@@ -114,10 +119,10 @@
       entry.op   = TRACE_OP_BLOCK;
       switch (itr->exitReason) {
         case TraceList::EXIT_REASON_BRANCH_TAKEN:
-          entry.op |= TRACE_OP_TAKEN;
+          entry.op |= taken;
           break;
         case TraceList::EXIT_REASON_BRANCH_NOT_TAKEN:
-          entry.op |= TRACE_OP_NOT_TAKEN;
+          entry.op |= notTaken;
           break;
         case TraceList::EXIT_REASON_OTHER:
           break;
@@ -127,7 +132,7 @@
           break;
        }
        
-      if (Verbose )
+      if ( Verbose )
         fprintf(stderr, "%x %x %x\n", entry.pc, entry.size, entry.op);
 
       status = fwrite( &entry, sizeof(entry), 1, traceFile );

diff -u gcc-testing/rtems-coverage/app_common.h:1.8 gcc-testing/rtems-coverage/app_common.h:1.9
--- gcc-testing/rtems-coverage/app_common.h:1.8	Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/app_common.h	Tue May 11 15:09:19 2010
@@ -10,6 +10,7 @@
 #include "DesiredSymbols.h"
 #include "Explanations.h"
 #include "Toolnames.h"
+#include "TargetBase.h"
 
 extern Coverage::Explanations*      AllExplanations;
 extern Coverage::ObjdumpProcessor*  objdumpProcessor;
@@ -18,6 +19,7 @@
 extern bool                         Verbose;
 extern const char*                  outputDirectory;
 extern bool                         BranchInfoAvailable;
+extern Target::TargetBase*          TargetInfo;
 
 bool FileIsNewer( const char *f1, const char *f2 ); 
 bool ReadUntilFound( FILE *file, const char *line );

diff -u gcc-testing/rtems-coverage/app_common.cc:1.4 gcc-testing/rtems-coverage/app_common.cc:1.5
--- gcc-testing/rtems-coverage/app_common.cc:1.4	Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/app_common.cc	Tue May 11 15:09:19 2010
@@ -24,6 +24,7 @@
 bool                        Verbose             = false;
 const char*                 outputDirectory     = ".";
 bool                        BranchInfoAvailable = false;
+Target::TargetBase*         TargetInfo          = NULL;
 
 bool FileIsNewer( const char *f1, const char *f2 ) {
   struct stat buf1, buf2;

diff -u gcc-testing/rtems-coverage/covoar.cc:1.17 gcc-testing/rtems-coverage/covoar.cc:1.18
--- gcc-testing/rtems-coverage/covoar.cc:1.17	Tue May 11 14:44:52 2010
+++ gcc-testing/rtems-coverage/covoar.cc	Tue May 11 15:09:19 2010
@@ -24,6 +24,7 @@
 #include "Explanations.h"
 #include "ObjdumpProcessor.h"
 #include "ReportsBase.h"
+#include "TargetFactory.h"
 
 /*
  *  Variables to control general behavior
@@ -271,7 +272,8 @@
   //
 
   // Create toolnames based on target.
-  Tools = new Coverage::Toolnames( target );
+  Tools      = new Coverage::Toolnames( target );
+  TargetInfo = Target::TargetFactory( target );
 
   // Create the set of desired symbols.
   SymbolsToAnalyze = new Coverage::DesiredSymbols();

diff -u gcc-testing/rtems-coverage/qemu-traces.h:1.2 gcc-testing/rtems-coverage/qemu-traces.h:1.3
--- gcc-testing/rtems-coverage/qemu-traces.h:1.2	Wed Jan 20 13:08:07 2010
+++ gcc-testing/rtems-coverage/qemu-traces.h	Tue May 11 15:09:19 2010
@@ -31,6 +31,10 @@
 #ifndef QEMU_TRACE_H
 #define QEMU_TRACE_H
 
+/* XXX really not always right */
+/* XXX Added for covoar so this compiles */
+typedef uint32_t target_ulong;
+
 /* File header definition.  */
 struct trace_header
 {
@@ -98,9 +102,6 @@
 #define TRACE_OP_BR2 0x04
 #define TRACE_OP_BR3 0x08
 
-#define TRACE_OP_TAKEN     TRACE_OP_BR0 /* Branch not taken at pc.  */
-#define TRACE_OP_NOT_TAKEN TRACE_OP_BR1 /* Branch taken at pc. */
-
 /*
  * Decision map operations
  */



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20100511/38f2425f/attachment-0001.html>


More information about the vc mailing list