<!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-17)</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-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.
</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.257&r2=text&tr2=1.258&diff_format=h">M</a></td><td width='1%'>1.258</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/CoverageReaderBase.h.diff?r1=text&tr1=1.3&r2=text&tr2=1.4&diff_format=h">M</a></td><td width='1%'>1.4</td><td width='100%'>rtems-coverage/CoverageReaderBase.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/CoverageReaderQEMU.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/CoverageReaderQEMU.h</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.14&r2=text&tr2=1.15&diff_format=h">M</a></td><td width='1%'>1.15</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.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/CoverageReaderRTEMS.h</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.5&r2=text&tr2=1.6&diff_format=h">M</a></td><td width='1%'>1.6</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.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/CoverageReaderSkyeye.h</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.9&r2=text&tr2=1.10&diff_format=h">M</a></td><td width='1%'>1.10</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.h.diff?r1=text&tr1=1.3&r2=text&tr2=1.4&diff_format=h">M</a></td><td width='1%'>1.4</td><td width='100%'>rtems-coverage/CoverageReaderTSIM.h</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.7&r2=text&tr2=1.8&diff_format=h">M</a></td><td width='1%'>1.8</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/app_common.h.diff?r1=text&tr1=1.10&r2=text&tr2=1.11&diff_format=h">M</a></td><td width='1%'>1.11</td><td width='100%'>rtems-coverage/app_common.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//gcc-testing/rtems-coverage/app_common.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/app_common.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.25&r2=text&tr2=1.26&diff_format=h">M</a></td><td width='1%'>1.26</td><td width='100%'>rtems-coverage/covoar.cc</td></tr>
</table>
<pre>
<font color='#006600'>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
</font><font color='#997700'>@@ -1,3 +1,12 @@
</font><font color='#000088'>+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.
+
</font> 2010-05-17 Jennifer Averett <Jennifer.Averett@OARcorp.com>
* ReportsHtml.cc: Added summary report to index.
<font color='#006600'>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
</font><font color='#997700'>@@ -41,10 +41,8 @@
</font> * @param[in] file is the coverage file to process
* @param[in] executableInformation is the information for an
* associated executable
<font color='#880000'>- *
- * @return Returns TRUE if the method succeeded and FALSE if it failed.
</font> */
<font color='#880000'>- virtual bool processFile(
</font><font color='#000088'>+ virtual void processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
) = 0;
<font color='#006600'>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
</font><font color='#997700'>@@ -40,7 +40,7 @@
</font> virtual ~CoverageReaderQEMU();
/* Inherit documentation from base class. */
<font color='#880000'>- bool processFile(
</font><font color='#000088'>+ void processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
);
<font color='#006600'>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
</font><font color='#997700'>@@ -22,10 +22,8 @@
</font>
/* hack so this can compile on the RH7 RTEMS 4.5 host */
#if (__GNUC__ <= 2)
<font color='#880000'>-#define STAT stat
</font> #define OPEN fopen
#else
<font color='#880000'>-#define STAT stat64
</font> #define OPEN fopen64
#endif
<font color='#997700'>@@ -40,14 +38,13 @@
</font> {
}
<font color='#880000'>- bool CoverageReaderQEMU::processFile(
</font><font color='#000088'>+ void CoverageReaderQEMU::processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
)
{
struct trace_header header;
uintptr_t i;
<font color='#880000'>- struct STAT statbuf;
</font> int status;
FILE* traceFile;
uint8_t taken;
<font color='#997700'>@@ -59,33 +56,27 @@
</font> branchInfo = taken | notTaken;
//
<font color='#880000'>- // 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;
- }
-
- //
</font> // Open the coverage file and read the header.
//
traceFile = OPEN( file, "r" );
if (!traceFile) {
<font color='#880000'>- fprintf( stderr, "Unable to open %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderQEMU::processFile - Unable to open %s\n",
+ file
+ );
+ exit( -1 );
</font> }
status = fread( &header, sizeof(trace_header), 1, traceFile );
if (status != 1) {
<font color='#880000'>- fprintf( stderr, "Unable to read header from %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderQEMU::processFile - "
+ "Unable to read header from %s\n",
+ file
+ );
+ exit( -1 );
</font> }
#if 0
<font color='#997700'>@@ -163,6 +154,5 @@
</font> }
fclose( traceFile );
<font color='#880000'>- return true;
</font> }
}
<font color='#006600'>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
</font><font color='#997700'>@@ -38,7 +38,7 @@
</font> virtual ~CoverageReaderRTEMS();
/* Inherit documentation from base class. */
<font color='#880000'>- bool processFile(
</font><font color='#000088'>+ void processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
);
<font color='#006600'>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
</font><font color='#997700'>@@ -28,7 +28,7 @@
</font> {
}
<font color='#880000'>- bool CoverageReaderRTEMS::processFile(
</font><font color='#000088'>+ void CoverageReaderRTEMS::processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
)
<font color='#997700'>@@ -40,36 +40,30 @@
</font> rtems_coverage_map_header_t header;
uintptr_t i;
uintptr_t length;
<font color='#880000'>- struct stat statbuf;
</font> int status;
//
<font color='#880000'>- // 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;
- }
-
- //
</font> // Open the coverage file and read the header.
//
coverageFile = fopen( file, "r" );
if (!coverageFile) {
<font color='#880000'>- fprintf( stderr, "Unable to open %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderRTEMS::processFile - Unable to open %s\n",
+ file
+ );
+ exit( -1 );
</font> }
status = fread( &header, sizeof(header), 1, coverageFile );
if (status != 1) {
<font color='#880000'>- fprintf( stderr, "Unable to read header from %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderRTEMS::processFile - "
+ "Unable to read header from %s\n",
+ file
+ );
+ exit( -1 );
</font> }
baseAddress = header.start;
<font color='#997700'>@@ -114,6 +108,5 @@
</font> }
fclose( coverageFile );
<font color='#880000'>- return true;
</font> }
}
<font color='#006600'>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
</font><font color='#997700'>@@ -38,7 +38,7 @@
</font> virtual ~CoverageReaderSkyeye();
/* Inherit documentation from base class. */
<font color='#880000'>- bool processFile(
</font><font color='#000088'>+ void processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
);
<font color='#006600'>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
</font><font color='#997700'>@@ -28,7 +28,7 @@
</font> {
}
<font color='#880000'>- bool CoverageReaderSkyeye::processFile(
</font><font color='#000088'>+ void CoverageReaderSkyeye::processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
)
<font color='#997700'>@@ -40,36 +40,30 @@
</font> prof_header_t header;
uintptr_t i;
uintptr_t length;
<font color='#880000'>- struct stat statbuf;
</font> int status;
//
<font color='#880000'>- // 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;
- }
-
- //
</font> // Open the coverage file and read the header.
//
coverageFile = fopen( file, "r" );
if (!coverageFile) {
<font color='#880000'>- fprintf( stderr, "Unable to open %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderSkyeye::processFile - Unable to open %s\n",
+ file
+ );
+ exit( -1 );
</font> }
status = fread( &header, sizeof(header), 1, coverageFile );
if (status != 1) {
<font color='#880000'>- fprintf( stderr, "Unable to read header from %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderSkyeye::processFile - "
+ "Unable to read header from %s\n",
+ file
+ );
+ exit( -1 );
</font> }
baseAddress = header.prof_start;
<font color='#997700'>@@ -132,6 +126,5 @@
</font> }
fclose( coverageFile );
<font color='#880000'>- return true;
</font> }
}
<font color='#006600'>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
</font><font color='#997700'>@@ -39,7 +39,7 @@
</font> virtual ~CoverageReaderTSIM();
/* Inherit documentation from base class. */
<font color='#880000'>- bool processFile(
</font><font color='#000088'>+ void processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
);
<font color='#006600'>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
</font><font color='#997700'>@@ -27,7 +27,7 @@
</font> {
}
<font color='#880000'>- bool CoverageReaderTSIM::processFile(
</font><font color='#000088'>+ void CoverageReaderTSIM::processFile(
</font> const char* const file,
ExecutableInfo* const executableInformation
)
<font color='#997700'>@@ -37,30 +37,19 @@
</font> int cover;
FILE* coverageFile;
int i;
<font color='#880000'>- struct stat statbuf;
</font> int status;
//
<font color='#880000'>- // 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;
- }
-
- //
</font> // Open the coverage file.
//
coverageFile = fopen( file, "r" );
if (!coverageFile) {
<font color='#880000'>- fprintf( stderr, "Unable to open %s\n", file );
- return false;
</font><font color='#000088'>+ fprintf(
+ stderr,
+ "ERROR: CoverageReaderTSIM::processFile - Unable to open %s\n",
+ file
+ );
+ exit( -1 );
</font> }
//
<font color='#997700'>@@ -103,6 +92,5 @@
</font> }
fclose( coverageFile );
<font color='#880000'>- return true;
</font> }
}
<font color='#006600'>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
</font><font color='#997700'>@@ -20,6 +20,7 @@
</font> extern Target::TargetBase* TargetInfo;
bool FileIsNewer( const char *f1, const char *f2 );<span style="background-color: #FF0000"> </span>
<font color='#000088'>+bool FileIsReadable( const char *f1 );<span style="background-color: #FF0000"> </span>
</font> bool ReadUntilFound( FILE *file, const char *line );
#endif
<font color='#006600'>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
</font><font color='#997700'>@@ -2,17 +2,26 @@
</font> * $Id$
*/
<font color='#880000'>-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
</font><font color='#000088'>+#include <stdio.h>
</font> #include <stdlib.h>
#include <string.h>
<font color='#880000'>-#include <stdio.h>
</font><font color='#000088'>+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
</font>
#include "app_common.h"
#include "DesiredSymbols.h"
#include "Explanations.h"
<font color='#000088'>+/* 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
+
</font> /*
* Global variables for the program
*/
<font color='#997700'>@@ -25,12 +34,12 @@
</font> Target::TargetBase* TargetInfo = NULL;
bool FileIsNewer( const char *f1, const char *f2 ) {
<font color='#880000'>- struct stat buf1, buf2;
</font><font color='#000088'>+ struct STAT buf1, buf2;
</font>
<font color='#880000'>- if (stat( f2, &buf2 ) == -1)
</font><font color='#000088'>+ if (STAT( f2, &buf2 ) == -1)
</font> return true;
<font color='#880000'>- if (stat (f1, &buf1 ) == -1)
</font><font color='#000088'>+ if (STAT( f1, &buf1 ) == -1)
</font> exit (1);
if (buf1.st_mtime > buf2.st_mtime)
<font color='#997700'>@@ -39,6 +48,19 @@
</font> return false;
}
<font color='#000088'>+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;
+}
+
</font> bool ReadUntilFound( FILE *file, const char *line )
{
char discardBuff[100];
<font color='#006600'>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
</font><font color='#997700'>@@ -153,18 +153,18 @@
</font> //
progname = argv[0];
<font color='#880000'>- while ((opt = getopt(argc, argv, "1:e:c:E:f:s:T:vC:O:")) != -1) {
</font><font color='#000088'>+ while ((opt = getopt(argc, argv, "C:1:e:c:E:f:s:T:O:v")) != -1) {
</font> switch (opt) {
case 'C': CoverageConfiguration->processFile( optarg ); break;
<font color='#880000'>- 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;
</font><font color='#000088'>+ 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;
</font> default: /* '?' */
usage();
exit( -1 );
<font color='#997700'>@@ -179,11 +179,39 @@
</font> // If a single executable was specified, process the remaining
// arguments as coverage file names.
if (singleExecutable) {
<font color='#880000'>- executableInfo = new Coverage::ExecutableInfo( singleExecutable );
- executablesToAnalyze.push_back( executableInfo );
- for (i=optind; i < argc; i++) {
- coverageFileName = argv[i];
- coverageFileNames.push_back( coverageFileName );
</font><font color='#000088'>+
+ // 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 );
+ }
</font> }
}
<font color='#997700'>@@ -191,18 +219,49 @@
</font> // arguments as executables and derive the coverage file names.
else {
for (i = optind; i < argc; i++) {
<font color='#880000'>- executableInfo = new Coverage::ExecutableInfo( argv[i] );
- executablesToAnalyze.push_back( executableInfo );
- coverageFileName = executableInfo->getFileName();
- coverageFileName.replace(
- coverageFileName.length() - executableExtensionLength,
- executableExtensionLength,
- coverageFileExtension
- );
- coverageFileNames.push_back( coverageFileName );
</font><font color='#000088'>+
+ // 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 );
+ }
+ }
</font> }
}
<font color='#000088'>+ // Ensure that there is at least one executable to process.
+ if (executablesToAnalyze.empty()) {
+ fprintf(
+ stderr, "ERROR: No information to analyze\n"
+ );
+ exit( -1 );
+ }
+
</font> if (Verbose) {
if (singleExecutable)
fprintf(
<font color='#997700'>@@ -266,7 +325,7 @@
</font> // Create data to support analysis.
//
<font color='#880000'>- // Create toolnames based on target.
</font><font color='#000088'>+ // Create data based on target.
</font> TargetInfo = Target::TargetFactory( target );
// Create the set of desired symbols.
<font color='#997700'>@@ -329,12 +388,11 @@
</font> ((*eitr)->getFileName()).c_str()
);
<font color='#880000'>- // along with its coverage file.
- if (coverageReader->processFile( (*citr).c_str(), *eitr )) {
</font><font color='#000088'>+ // Process its coverage file.
+ coverageReader->processFile( (*citr).c_str(), *eitr );
</font>
<font color='#880000'>- // Merge each symbols coverage map into a unified coverage map.
- (*eitr)->mergeCoverage();
- }
</font><font color='#000088'>+ // Merge each symbols coverage map into a unified coverage map.
+ (*eitr)->mergeCoverage();
</font>
if (!singleExecutable)
eitr++;
</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>