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