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

rtems-vc at rtems.org rtems-vc at rtems.org
Mon May 17 22:10:03 UTC 2010


 *humph*:
2010-05-17	Glenn Humphrey

	* CoverageReaderBase.h, CoverageReaderQEMU.cc, CoverageReaderQEMU.h,
	CoverageReaderRTEMS.cc, CoverageReaderRTEMS.h,
	CoverageReaderSkyeye.cc, CoverageReaderSkyeye.h,
	CoverageReaderTSIM.cc, CoverageReaderTSIM.h, app_common.cc,
	app_common.h, covoar.cc: Verified that the executable files and the
	coverage files were readable before performing any analysis.

M  1.258  rtems-coverage/ChangeLog
M    1.4  rtems-coverage/CoverageReaderBase.h
M    1.3  rtems-coverage/CoverageReaderQEMU.h
M   1.15  rtems-coverage/CoverageReaderQEMU.cc
M    1.3  rtems-coverage/CoverageReaderRTEMS.h
M    1.6  rtems-coverage/CoverageReaderRTEMS.cc
M    1.3  rtems-coverage/CoverageReaderSkyeye.h
M   1.10  rtems-coverage/CoverageReaderSkyeye.cc
M    1.4  rtems-coverage/CoverageReaderTSIM.h
M    1.8  rtems-coverage/CoverageReaderTSIM.cc
M   1.11  rtems-coverage/app_common.h
M    1.7  rtems-coverage/app_common.cc
M   1.26  rtems-coverage/covoar.cc

diff -u gcc-testing/rtems-coverage/ChangeLog:1.257 gcc-testing/rtems-coverage/ChangeLog:1.258
--- gcc-testing/rtems-coverage/ChangeLog:1.257	Mon May 17 14:35:56 2010
+++ gcc-testing/rtems-coverage/ChangeLog	Mon May 17 16:47:07 2010
@@ -1,3 +1,12 @@
+2010-05-17	Glenn Humphrey
+
+	* CoverageReaderBase.h, CoverageReaderQEMU.cc, CoverageReaderQEMU.h,
+	CoverageReaderRTEMS.cc, CoverageReaderRTEMS.h,
+	CoverageReaderSkyeye.cc, CoverageReaderSkyeye.h,
+	CoverageReaderTSIM.cc, CoverageReaderTSIM.h, app_common.cc,
+	app_common.h, covoar.cc: Verified that the executable files and the
+	coverage files were readable before performing any analysis.
+
 2010-05-17	Jennifer Averett <Jennifer.Averett at OARcorp.com>
 
 	* ReportsHtml.cc: Added summary report to index.

diff -u gcc-testing/rtems-coverage/CoverageReaderBase.h:1.3 gcc-testing/rtems-coverage/CoverageReaderBase.h:1.4
--- gcc-testing/rtems-coverage/CoverageReaderBase.h:1.3	Fri Mar  5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderBase.h	Mon May 17 16:47:07 2010
@@ -41,10 +41,8 @@
      *  @param[in] file is the coverage file to process
      *  @param[in] executableInformation is the information for an
      *             associated executable
-     *
-     *  @return Returns TRUE if the method succeeded and FALSE if it failed.
      */
-    virtual bool processFile(
+    virtual void processFile(
       const char* const     file,
       ExecutableInfo* const executableInformation
     ) = 0;

diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.h:1.2 gcc-testing/rtems-coverage/CoverageReaderQEMU.h:1.3
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.h:1.2	Fri Mar  5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.h	Mon May 17 16:47:07 2010
@@ -40,7 +40,7 @@
     virtual ~CoverageReaderQEMU();
 
     /* Inherit documentation from base class. */
-    bool processFile(
+    void processFile(
       const char* const     file,
       ExecutableInfo* const executableInformation
     );

diff -u gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.14 gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.15
--- gcc-testing/rtems-coverage/CoverageReaderQEMU.cc:1.14	Tue May 11 15:09:19 2010
+++ gcc-testing/rtems-coverage/CoverageReaderQEMU.cc	Mon May 17 16:47:07 2010
@@ -22,10 +22,8 @@
 
 /* hack so this can compile on the RH7 RTEMS 4.5 host */
 #if (__GNUC__ <= 2)
-#define STAT stat
 #define OPEN fopen
 #else
-#define STAT stat64
 #define OPEN fopen64
 #endif
 
@@ -40,14 +38,13 @@
   {
   }
 
-  bool CoverageReaderQEMU::processFile(
+  void CoverageReaderQEMU::processFile(
     const char* const     file,
     ExecutableInfo* const executableInformation
   )
   {
     struct trace_header header;
     uintptr_t           i;
-    struct STAT         statbuf;
     int                 status;
     FILE*               traceFile;
     uint8_t             taken;
@@ -59,33 +56,27 @@
     branchInfo = taken | notTaken;
 
     //
-    // Verify that the coverage file has a non-zero size.
-    //
-    // NOTE: We prefer stat64 because some of the coverage files are HUGE!
-    status = STAT( file, &statbuf );
-    if (status == -1) {
-      fprintf( stderr, "Unable to stat %s\n", file );
-      return false;
-    }
-
-    if (statbuf.st_size == 0) {
-      fprintf( stderr, "%s is 0 bytes long\n", file );
-      return false;
-    }
-
-    //
     // Open the coverage file and read the header.
     //
     traceFile = OPEN( file, "r" );
     if (!traceFile) {
-      fprintf( stderr, "Unable to open %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderQEMU::processFile - Unable to open %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     status = fread( &header, sizeof(trace_header), 1, traceFile );
     if (status != 1) {
-      fprintf( stderr, "Unable to read header from %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderQEMU::processFile - "
+        "Unable to read header from %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     #if 0
@@ -163,6 +154,5 @@
     }
 
     fclose( traceFile );
-    return true;
   }
 }

diff -u gcc-testing/rtems-coverage/CoverageReaderRTEMS.h:1.2 gcc-testing/rtems-coverage/CoverageReaderRTEMS.h:1.3
--- gcc-testing/rtems-coverage/CoverageReaderRTEMS.h:1.2	Fri Mar  5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderRTEMS.h	Mon May 17 16:47:07 2010
@@ -38,7 +38,7 @@
     virtual ~CoverageReaderRTEMS();
 
     /* Inherit documentation from base class. */
-    bool processFile(
+    void processFile(
       const char* const     file,
       ExecutableInfo* const executableInformation
     );

diff -u gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.5 gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.6
--- gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc:1.5	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/CoverageReaderRTEMS.cc	Mon May 17 16:47:07 2010
@@ -28,7 +28,7 @@
   {
   }
 
-  bool CoverageReaderRTEMS::processFile(
+  void CoverageReaderRTEMS::processFile(
     const char* const     file,
     ExecutableInfo* const executableInformation
   )
@@ -40,36 +40,30 @@
     rtems_coverage_map_header_t  header;
     uintptr_t                    i;
     uintptr_t                    length;
-    struct stat                  statbuf;
     int                          status;
 
     //
-    // Verify that the coverage file has a non-zero size.
-    //
-    status = stat( file, &statbuf );
-    if (status == -1) {
-      fprintf( stderr, "Unable to stat %s\n", file );
-      return false;
-    }
-
-    if (statbuf.st_size == 0) {
-      fprintf( stderr, "%s is 0 bytes long\n", file );
-      return false;
-    }
-
-    //
     // Open the coverage file and read the header.
     //
     coverageFile = fopen( file, "r" );
     if (!coverageFile) {
-      fprintf( stderr, "Unable to open %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderRTEMS::processFile - Unable to open %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     status = fread( &header, sizeof(header), 1, coverageFile );
     if (status != 1) {
-      fprintf( stderr, "Unable to read header from %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderRTEMS::processFile - "
+        "Unable to read header from %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     baseAddress = header.start;
@@ -114,6 +108,5 @@
     }
 
     fclose( coverageFile );
-    return true;
   }
 }

diff -u gcc-testing/rtems-coverage/CoverageReaderSkyeye.h:1.2 gcc-testing/rtems-coverage/CoverageReaderSkyeye.h:1.3
--- gcc-testing/rtems-coverage/CoverageReaderSkyeye.h:1.2	Fri Mar  5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderSkyeye.h	Mon May 17 16:47:07 2010
@@ -38,7 +38,7 @@
     virtual ~CoverageReaderSkyeye();
 
     /* Inherit documentation from base class. */
-    bool processFile(
+    void processFile(
       const char* const     file,
       ExecutableInfo* const executableInformation
     );

diff -u gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.9 gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.10
--- gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc:1.9	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/CoverageReaderSkyeye.cc	Mon May 17 16:47:07 2010
@@ -28,7 +28,7 @@
   {
   }
 
-  bool CoverageReaderSkyeye::processFile(
+  void CoverageReaderSkyeye::processFile(
     const char* const     file,
     ExecutableInfo* const executableInformation
   )
@@ -40,36 +40,30 @@
     prof_header_t    header;
     uintptr_t        i;
     uintptr_t        length;
-    struct stat      statbuf;
     int              status;
 
     //
-    // Verify that the coverage file has a non-zero size.
-    //
-    status = stat( file, &statbuf );
-    if (status == -1) {
-      fprintf( stderr, "Unable to stat %s\n", file );
-      return false;
-    }
-
-    if (statbuf.st_size == 0) {
-      fprintf( stderr, "%s is 0 bytes long\n", file );
-      return false;
-    }
-
-    //
     // Open the coverage file and read the header.
     //
     coverageFile = fopen( file, "r" );
     if (!coverageFile) {
-      fprintf( stderr, "Unable to open %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderSkyeye::processFile - Unable to open %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     status = fread( &header, sizeof(header), 1, coverageFile );
     if (status != 1) {
-      fprintf( stderr, "Unable to read header from %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderSkyeye::processFile - "
+        "Unable to read header from %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     baseAddress = header.prof_start;
@@ -132,6 +126,5 @@
     }
 
     fclose( coverageFile );
-    return true;
   }
 }

diff -u gcc-testing/rtems-coverage/CoverageReaderTSIM.h:1.3 gcc-testing/rtems-coverage/CoverageReaderTSIM.h:1.4
--- gcc-testing/rtems-coverage/CoverageReaderTSIM.h:1.3	Fri Mar  5 10:45:37 2010
+++ gcc-testing/rtems-coverage/CoverageReaderTSIM.h	Mon May 17 16:47:07 2010
@@ -39,7 +39,7 @@
     virtual ~CoverageReaderTSIM();
 
     /* Inherit documentation from base class. */
-    bool processFile(
+    void processFile(
       const char* const     file,
       ExecutableInfo* const executableInformation
     );

diff -u gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.7 gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.8
--- gcc-testing/rtems-coverage/CoverageReaderTSIM.cc:1.7	Fri May  7 13:53:58 2010
+++ gcc-testing/rtems-coverage/CoverageReaderTSIM.cc	Mon May 17 16:47:07 2010
@@ -27,7 +27,7 @@
   {
   }
 
-  bool CoverageReaderTSIM::processFile(
+  void CoverageReaderTSIM::processFile(
     const char* const     file,
     ExecutableInfo* const executableInformation
   )
@@ -37,30 +37,19 @@
     int              cover;
     FILE*            coverageFile;
     int              i;
-    struct stat      statbuf;
     int              status;
 
     //
-    // Verify that the coverage file has a non-zero size.
-    //
-    status = stat( file, &statbuf );
-    if (status == -1) {
-      fprintf( stderr, "Unable to stat %s\n", file );
-      return false;
-    }
-
-    if (statbuf.st_size == 0) {
-      fprintf( stderr, "%s is 0 bytes long\n", file );
-      return false;
-    }
-
-    //
     // Open the coverage file.
     //
     coverageFile = fopen( file, "r" );
     if (!coverageFile) {
-      fprintf( stderr, "Unable to open %s\n", file );
-      return false;
+      fprintf(
+        stderr,
+        "ERROR: CoverageReaderTSIM::processFile - Unable to open %s\n",
+        file
+      );
+      exit( -1 );
     }
 
     //
@@ -103,6 +92,5 @@
     }
 
     fclose( coverageFile );
-    return true;
   }
 }

diff -u gcc-testing/rtems-coverage/app_common.h:1.10 gcc-testing/rtems-coverage/app_common.h:1.11
--- gcc-testing/rtems-coverage/app_common.h:1.10	Tue May 11 15:18:32 2010
+++ gcc-testing/rtems-coverage/app_common.h	Mon May 17 16:47:07 2010
@@ -20,6 +20,7 @@
 extern Target::TargetBase*          TargetInfo;
 
 bool FileIsNewer( const char *f1, const char *f2 ); 
+bool FileIsReadable( const char *f1 ); 
 bool ReadUntilFound( FILE *file, const char *line );
 
 #endif

diff -u gcc-testing/rtems-coverage/app_common.cc:1.6 gcc-testing/rtems-coverage/app_common.cc:1.7
--- gcc-testing/rtems-coverage/app_common.cc:1.6	Tue May 11 15:18:32 2010
+++ gcc-testing/rtems-coverage/app_common.cc	Mon May 17 16:47:07 2010
@@ -2,17 +2,26 @@
  *  $Id$
  */
 
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 #include "app_common.h"
 #include "DesiredSymbols.h"
 #include "Explanations.h"
 
+/* hack so this can compile on the RH7 RTEMS 4.5 host */
+#if (__GNUC__ <= 2)
+#define STAT stat
+#define OPEN fopen
+#else
+#define STAT stat64
+#define OPEN fopen64
+#endif
+
 /*
  *  Global variables for the program
  */
@@ -25,12 +34,12 @@
 Target::TargetBase*         TargetInfo          = NULL;
 
 bool FileIsNewer( const char *f1, const char *f2 ) {
-  struct stat buf1, buf2;
+  struct STAT buf1, buf2;
 
-   if (stat( f2, &buf2 ) == -1)
+   if (STAT( f2, &buf2 ) == -1)
     return true;
   
-  if (stat (f1, &buf1 ) == -1)
+  if (STAT( f1, &buf1 ) == -1)
     exit (1);
 
   if (buf1.st_mtime > buf2.st_mtime)
@@ -39,6 +48,19 @@
   return false;
 }
 
+bool FileIsReadable( const char *f1 ) {
+  struct STAT buf1;
+
+  if (STAT( f1, &buf1 ) == -1)
+    return false;
+
+  if (buf1.st_size == 0)
+    return false;
+
+  // XXX check permission ??
+  return true;
+}
+
 bool ReadUntilFound( FILE *file, const char *line )
 {
   char discardBuff[100];

diff -u gcc-testing/rtems-coverage/covoar.cc:1.25 gcc-testing/rtems-coverage/covoar.cc:1.26
--- gcc-testing/rtems-coverage/covoar.cc:1.25	Fri May 14 12:26:35 2010
+++ gcc-testing/rtems-coverage/covoar.cc	Mon May 17 16:47:07 2010
@@ -153,18 +153,18 @@
   //
   progname = argv[0];
 
-  while ((opt = getopt(argc, argv, "1:e:c:E:f:s:T:vC:O:")) != -1) {
+  while ((opt = getopt(argc, argv, "C:1:e:c:E:f:s:T:O:v")) != -1) {
     switch (opt) {
       case 'C': CoverageConfiguration->processFile( optarg ); break;
-      case '1': singleExecutable = optarg;       break;
-      case 'e': executableExtension = optarg;    break;
-      case 'c': coverageFileExtension = optarg;  break;
-      case 'E': explanations          = optarg;  break;
-      case 's': symbolsFile           = optarg;  break;
-      case 'T': target                = optarg;  break;
-      case 'v': Verbose               = true;    break;
-      case 'f': format                = optarg;  break;
-      case 'O': outputDirectory       = optarg;  break;
+      case '1': singleExecutable      = optarg; break;
+      case 'e': executableExtension   = optarg; break;
+      case 'c': coverageFileExtension = optarg; break;
+      case 'E': explanations          = optarg; break;
+      case 'f': format                = optarg; break;
+      case 's': symbolsFile           = optarg; break;
+      case 'T': target                = optarg; break;
+      case 'O': outputDirectory       = optarg; break;
+      case 'v': Verbose               = true;   break;
       default: /* '?' */
         usage();
         exit( -1 );
@@ -179,11 +179,39 @@
   // If a single executable was specified, process the remaining
   // arguments as coverage file names.
   if (singleExecutable) {
-    executableInfo = new Coverage::ExecutableInfo( singleExecutable );
-    executablesToAnalyze.push_back( executableInfo );
-    for (i=optind; i < argc; i++) {
-      coverageFileName = argv[i];
-      coverageFileNames.push_back( coverageFileName );
+
+    // Ensure that the executable is readable.
+    if (!FileIsReadable( singleExecutable )) {
+      fprintf(
+        stderr,
+        "WARNING: Unable to read executable %s\n",
+        singleExecutable
+      );
+    }
+
+    else {
+
+      for (i=optind; i < argc; i++) {
+
+        // Ensure that the coverage file is readable.
+        if (!FileIsReadable( argv[i] )) {
+          fprintf(
+            stderr,
+            "WARNING: Unable to read coverage file %s\n",
+            argv[i]
+          );
+        }
+
+        else
+          coverageFileNames.push_back( argv[i] );
+      }
+
+      // If there was at least one coverage file, create the
+      // executable information.
+      if (!coverageFileNames.empty()) {
+        executableInfo = new Coverage::ExecutableInfo( singleExecutable );
+        executablesToAnalyze.push_back( executableInfo );
+      }
     }
   }
 
@@ -191,18 +219,49 @@
   // arguments as executables and derive the coverage file names.
   else {
     for (i = optind; i < argc; i++) {
-      executableInfo = new Coverage::ExecutableInfo( argv[i] );
-      executablesToAnalyze.push_back( executableInfo );
-      coverageFileName = executableInfo->getFileName();
-      coverageFileName.replace(
-        coverageFileName.length() - executableExtensionLength,
-        executableExtensionLength,
-        coverageFileExtension
-      );
-      coverageFileNames.push_back( coverageFileName );
+
+      // Ensure that the executable is readable.
+      if (!FileIsReadable( argv[i] )) {
+        fprintf(
+          stderr,
+          "WARNING: Unable to read executable %s\n",
+          argv[i]
+        );
+      }
+
+      else {
+        coverageFileName = argv[i];
+        coverageFileName.replace(
+          coverageFileName.length() - executableExtensionLength,
+          executableExtensionLength,
+          coverageFileExtension
+        );
+
+        if (!FileIsReadable( coverageFileName.c_str() )) {
+          fprintf(
+            stderr,
+            "WARNING: Unable to read coverage file %s\n",
+            coverageFileName.c_str()
+          );
+        }
+
+        else {
+          executableInfo = new Coverage::ExecutableInfo( argv[i] );
+          executablesToAnalyze.push_back( executableInfo );
+          coverageFileNames.push_back( coverageFileName );
+        }
+      }
     }
   }
 
+  // Ensure that there is at least one executable to process.
+  if (executablesToAnalyze.empty()) {
+    fprintf(
+      stderr, "ERROR: No information to analyze\n"
+    );
+    exit( -1 );
+  }
+
   if (Verbose) {
     if (singleExecutable)
       fprintf(
@@ -266,7 +325,7 @@
   // Create data to support analysis.
   //
 
-  // Create toolnames based on target.
+  // Create data based on target.
   TargetInfo = Target::TargetFactory( target );
 
   // Create the set of desired symbols.
@@ -329,12 +388,11 @@
         ((*eitr)->getFileName()).c_str()
       );
 
-    // along with its coverage file.
-    if (coverageReader->processFile( (*citr).c_str(), *eitr )) {
+    // Process its coverage file.
+    coverageReader->processFile( (*citr).c_str(), *eitr );
 
-      // Merge each symbols coverage map into a unified coverage map.
-      (*eitr)->mergeCoverage();
-    }
+    // Merge each symbols coverage map into a unified coverage map.
+    (*eitr)->mergeCoverage();
 
     if (!singleExecutable)
       eitr++;



--

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/20100517/421e015b/attachment.html>


More information about the vc mailing list