From 881824f766937a47fb494f97f4ebcd44c99135cc Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Fri, 11 May 2018 14:24:11 +1200 Subject: tester/covoar: Remove all exit() calls and throw an rld::error exception. Add a suitable catch to covoar's main. --- tester/covoar/CoverageFactory.cc | 13 +- tester/covoar/CoverageReaderQEMU.cc | 55 +++---- tester/covoar/CoverageReaderRTEMS.cc | 59 +++----- tester/covoar/CoverageReaderSkyeye.cc | 57 +++---- tester/covoar/CoverageReaderTSIM.cc | 39 ++--- tester/covoar/CoverageWriterRTEMS.cc | 50 +++---- tester/covoar/CoverageWriterSkyeye.cc | 54 +++---- tester/covoar/CoverageWriterTSIM.cc | 51 ++++--- tester/covoar/DesiredSymbols.cc | 43 ++---- tester/covoar/DesiredSymbols.h | 3 +- tester/covoar/ExecutableInfo.cc | 20 +-- tester/covoar/Explanations.cc | 87 +++++------ tester/covoar/ObjdumpProcessor.cc | 23 ++- tester/covoar/ReportsHtml.cc | 275 +++++++++++++++++----------------- tester/covoar/SymbolTable.cc | 18 ++- tester/covoar/TargetBase.cc | 29 ++-- tester/covoar/TargetFactory.cc | 23 ++- tester/covoar/Target_arm.cc | 22 ++- tester/covoar/Target_m68k.cc | 24 +-- tester/covoar/Target_powerpc.cc | 19 ++- tester/covoar/TraceConverter.cc | 6 +- tester/covoar/TraceWriterQEMU.cc | 55 +++---- tester/covoar/covoar.cc | 232 ++++++++++++++++------------ 23 files changed, 608 insertions(+), 649 deletions(-) diff --git a/tester/covoar/CoverageFactory.cc b/tester/covoar/CoverageFactory.cc index 8b30371..991ba8f 100644 --- a/tester/covoar/CoverageFactory.cc +++ b/tester/covoar/CoverageFactory.cc @@ -10,6 +10,8 @@ #include #include +#include + #include "CoverageFactory.h" #include "CoverageReaderQEMU.h" #include "CoverageReaderRTEMS.h" @@ -35,13 +37,10 @@ Coverage::CoverageFormats_t Coverage::CoverageFormatToEnum( if (!strcmp( format, "TSIM" )) return COVERAGE_FORMAT_TSIM; - fprintf( - stderr, - "ERROR: %s is an unknown coverage format " - "(supported formats - QEMU, RTEMS, Skyeye and TSIM)\n", - format - ); - exit( 1 ); + std::ostringstream what; + what << format << " is an unknown coverage format " + << "(supported formats - QEMU, RTEMS, Skyeye and TSIM)"; + throw rld::error( what, "Coverage" ); } Coverage::CoverageReaderBase* Coverage::CreateCoverageReader( diff --git a/tester/covoar/CoverageReaderQEMU.cc b/tester/covoar/CoverageReaderQEMU.cc index 37718ec..3d3b50f 100644 --- a/tester/covoar/CoverageReaderQEMU.cc +++ b/tester/covoar/CoverageReaderQEMU.cc @@ -9,8 +9,11 @@ #include #include +#include #include +#include + #include "app_common.h" #include "CoverageReaderQEMU.h" #include "CoverageMap.h" @@ -48,57 +51,33 @@ namespace Coverage { uint8_t notTaken; uint8_t branchInfo; - taken = TargetInfo->qemuTakenBit(); - notTaken = TargetInfo->qemuNotTakenBit(); + taken = TargetInfo->qemuTakenBit(); + notTaken = TargetInfo->qemuNotTakenBit(); branchInfo = taken | notTaken; // // Open the coverage file and read the header. // - traceFile = OPEN( file, "r" ); + traceFile = ::OPEN( file, "r" ); if (!traceFile) { - fprintf( - stderr, - "ERROR: CoverageReaderQEMU::processFile - Unable to open %s\n", - file - ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageReaderQEMU::processFile" ); } - status = fread( &header, sizeof(trace_header), 1, traceFile ); + status = ::fread( &header, sizeof(trace_header), 1, traceFile ); if (status != 1) { - fprintf( - stderr, - "ERROR: CoverageReaderQEMU::processFile - " - "Unable to read header from %s\n", - file - ); - exit( -1 ); + ::fclose( traceFile ); + std::ostringstream what; + what << "Unable to read header from " << file; + throw rld::error( what, "CoverageReaderQEMU::processFile" ); } - #if 0 - fprintf( - stderr, - "magic = %s\n" - "version = %d\n" - "kind = %d\n" - "sizeof_target_pc = %d\n" - "big_endian = %d\n" - "machine = %02x:%02x\n", - header.magic, - header.version, - header.kind, - header.sizeof_target_pc, - header.big_endian, - header.machine[0], header.machine[1] - ); - #endif - // // Read ENTRIES number of trace entries. // #define ENTRIES 1024 - while (1) { + while (true) { CoverageMapBase *aCoverageMap = NULL; struct trace_entry entries[ENTRIES]; struct trace_entry *entry; @@ -106,7 +85,7 @@ namespace Coverage { // Read and process each line of the coverage file. - num_entries = fread( + num_entries = ::fread( entries, sizeof(struct trace_entry), ENTRIES, @@ -149,6 +128,6 @@ namespace Coverage { } } } - fclose( traceFile ); + ::fclose( traceFile ); } } diff --git a/tester/covoar/CoverageReaderRTEMS.cc b/tester/covoar/CoverageReaderRTEMS.cc index 8439c41..a9e8ae8 100644 --- a/tester/covoar/CoverageReaderRTEMS.cc +++ b/tester/covoar/CoverageReaderRTEMS.cc @@ -9,6 +9,11 @@ #include #include +#include +#include + +#include + #include "CoverageReaderRTEMS.h" #include "CoverageMap.h" #include "ExecutableInfo.h" @@ -41,54 +46,36 @@ namespace Coverage { // // Open the coverage file and read the header. // - coverageFile = fopen( file, "r" ); + coverageFile = ::fopen( file, "r" ); if (!coverageFile) { - fprintf( - stderr, - "ERROR: CoverageReaderRTEMS::processFile - Unable to open %s\n", - file - ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageReaderRTEMS::processFile" ); } - status = fread( &header, sizeof(header), 1, coverageFile ); + status = ::fread( &header, sizeof(header), 1, coverageFile ); if (status != 1) { - fprintf( - stderr, - "ERROR: CoverageReaderRTEMS::processFile - " - "Unable to read header from %s\n", - file - ); - exit( -1 ); + ::fclose( coverageFile ); + std::ostringstream what; + what << "Unable to read header from " << file; + throw rld::error( what, "CoverageReaderRTEMS::processFile" ); } baseAddress = header.start; length = header.end - header.start; - - #if 0 - fprintf( - stderr, - "%s: 0x%08x 0x%08x 0x%08lx/%ld\n", - file, - header.start, - header.end, - (unsigned long) length, - (unsigned long) length - ); - #endif // // Read and process each line of the coverage file. // - for (i=0; i #include +#include +#include + #include "CoverageReaderSkyeye.h" #include "CoverageMap.h" #include "ExecutableInfo.h" @@ -41,54 +44,36 @@ namespace Coverage { // // Open the coverage file and read the header. // - coverageFile = fopen( file, "r" ); + coverageFile = ::fopen( file, "r" ); if (!coverageFile) { - fprintf( - stderr, - "ERROR: CoverageReaderSkyeye::processFile - Unable to open %s\n", - file - ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageReaderSkyeye::processFile" ); } - status = fread( &header, sizeof(header), 1, coverageFile ); + status = ::fread( &header, sizeof(header), 1, coverageFile ); if (status != 1) { - fprintf( - stderr, - "ERROR: CoverageReaderSkyeye::processFile - " - "Unable to read header from %s\n", - file - ); - exit( -1 ); + ::fclose( coverageFile ); + std::ostringstream what; + what << "Unable to read header from " << file; + throw rld::error( what, "CoverageReaderSkyeye::processFile" ); } baseAddress = header.prof_start; length = header.prof_end - header.prof_start; - - #if 0 - fprintf( - stderr, - "%s: 0x%08x 0x%08x 0x%08lx/%ld\n", - file, - header.prof_start, - header.prof_end, - (unsigned long) length, - (unsigned long) length - ); - #endif // // Read and process each line of the coverage file. // - for (i=0; i #include +#include +#include + +#include + #include "app_common.h" #include "CoverageReaderTSIM.h" #include "CoverageMap.h" @@ -40,35 +45,33 @@ namespace Coverage { // // Open the coverage file. // - coverageFile = fopen( file, "r" ); + coverageFile = ::fopen( file, "r" ); if (!coverageFile) { - fprintf( - stderr, - "ERROR: CoverageReaderTSIM::processFile - Unable to open %s\n", - file - ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageReaderTSIM::processFile" ); } // // Read and process each line of the coverage file. // - while ( 1 ) { - status = fscanf( coverageFile, "%x : ", &baseAddress ); + while ( true ) { + status = ::fscanf( coverageFile, "%x : ", &baseAddress ); if (status == EOF || status == 0) { break; } - for (i=0; i < 0x80; i+=4) { + for (i = 0; i < 0x80; i += 4) { unsigned int a; - status = fscanf( coverageFile, "%x", &cover ); + status = ::fscanf( coverageFile, "%x", &cover ); if (status == EOF || status == 0) { - fprintf( - stderr, - "CoverageReaderTSIM: WARNING! Short line in %s at address 0x%08x\n", - file, - baseAddress - ); + std::cerr << "CoverageReaderTSIM: WARNING! Short line in " + << file + << " at address 0x" + << std::hex << std::setfill('0') + << baseAddress + << std::setfill(' ') << std::dec + << std::endl; break; } @@ -97,6 +100,6 @@ namespace Coverage { } } - fclose( coverageFile ); + ::fclose( coverageFile ); } } diff --git a/tester/covoar/CoverageWriterRTEMS.cc b/tester/covoar/CoverageWriterRTEMS.cc index 7a5150f..48e8fd1 100644 --- a/tester/covoar/CoverageWriterRTEMS.cc +++ b/tester/covoar/CoverageWriterRTEMS.cc @@ -9,11 +9,16 @@ #include #include +#include +#include + +#include + #include "CoverageWriterRTEMS.h" #include "rtemscov_header.h" namespace Coverage { - + CoverageWriterRTEMS::CoverageWriterRTEMS() { } @@ -38,14 +43,11 @@ namespace Coverage { /* * read the file and update the coverage map passed in */ - coverageFile = fopen( file, "w" ); + coverageFile = ::fopen( file, "w" ); if ( !coverageFile ) { - fprintf( - stderr, - "ERROR: CoverageWriterRTEMS::writeFile - unable to open %s\n", - file - ); - exit(-1); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageWriterRTEMS::writeFile" ); } /* clear out the header and fill it in */ @@ -56,33 +58,29 @@ namespace Coverage { header.end = highAddress; strcpy( header.desc, "RTEMS Coverage Data" ); - status = fwrite(&header, 1, sizeof(header), coverageFile); + status = ::fwrite(&header, 1, sizeof(header), coverageFile); if (status != sizeof(header)) { - fprintf( - stderr, - "ERROR: CoverageWriterRTEMS::writeFile - unable to write header " - "to %s\n", - file - ); - exit(-1); + ::fclose( coverageFile ); + std::ostringstream what; + what << "Unable to write header to " << file; + throw rld::error( what, "CoverageWriterRTEMS::writeFile" ); } for ( a=lowAddress ; a < highAddress ; a++ ) { cover = ((coverage->wasExecuted( a )) ? 0x01 : 0); status = fwrite(&cover, 1, sizeof(cover), coverageFile); if (status != sizeof(cover)) { - fprintf( - stderr, - "ERROR: CoverageWriterRTEMS::writeFile - write to %s " - "at address 0x%08x failed\n", - file, - a - ); - exit( -1 ); + std::cerr << "CoverageWriterRTEMS::writeFile - write to " + << file + << " at address 0x%" + << std::hex << std::setfill('0') + << std::setw(8) << a + << std::setfill(' ') << std::dec + << " failed" + << std::endl; } - // fprintf( stderr, "0x%x %d\n", a, cover ); } - fclose( coverageFile ); + ::fclose( coverageFile ); } } diff --git a/tester/covoar/CoverageWriterSkyeye.cc b/tester/covoar/CoverageWriterSkyeye.cc index e0aa943..7f78644 100644 --- a/tester/covoar/CoverageWriterSkyeye.cc +++ b/tester/covoar/CoverageWriterSkyeye.cc @@ -8,13 +8,19 @@ #include #include +#include #include +#include +#include + +#include + #include "CoverageWriterSkyeye.h" #include "skyeye_header.h" namespace Coverage { - + CoverageWriterSkyeye::CoverageWriterSkyeye() { } @@ -39,14 +45,11 @@ namespace Coverage { /* * read the file and update the coverage map passed in */ - coverageFile = fopen( file, "w" ); + coverageFile = ::fopen( file, "w" ); if ( !coverageFile ) { - fprintf( - stderr, - "ERROR: CoverageWriterSkyeye::writeFile - unable to open %s\n", - file - ); - exit(-1); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageWriterSkyeye::writeFile" ); } /* clear out the header and fill it in */ @@ -57,34 +60,31 @@ namespace Coverage { header.prof_end = highAddress; strcpy( header.desc, "Skyeye Coverage Data" ); - status = fwrite(&header, 1, sizeof(header), coverageFile); + status = ::fwrite(&header, 1, sizeof(header), coverageFile); if (status != sizeof(header)) { - fprintf( - stderr, - "ERROR: CoverageWriterSkyeye::writeFile - unable to write header " - "to %s\n", - file - ); - exit(-1); + ::fclose( coverageFile ); + std::ostringstream what; + what << "Unable to write header to " << file; + throw rld::error( what, "CoverageWriterSkyeye::writeFile" ); } - for ( a=lowAddress ; a < highAddress ; a+= 8 ) { + for ( a = lowAddress; a < highAddress; a += 8 ) { cover = ((coverage->wasExecuted( a )) ? 0x01 : 0); cover |= ((coverage->wasExecuted( a + 4 )) ? 0x10 : 0); status = fwrite(&cover, 1, sizeof(cover), coverageFile); if (status != sizeof(cover)) { - fprintf( - stderr, - "ERROR: CoverageWriterSkyeye::writeFile - write to %s " - "at address 0x%08x failed\n", - file, - a - ); - exit( -1 ); + ::fclose( coverageFile ); + std::ostringstream what; + what << "write to " << file + << " at address 0x" + << std::hex << std::setfill('0') + << std::setw(8) << a + << std::setfill(' ') << std::dec + << "failed"; + throw rld::error( what, "CoverageWriterSkyeye::writeFile" ); } - // fprintf( stderr, "0x%x %d\n", a, cover ); } - fclose( coverageFile ); + ::fclose( coverageFile ); } } diff --git a/tester/covoar/CoverageWriterTSIM.cc b/tester/covoar/CoverageWriterTSIM.cc index ec7c5b4..a4731a9 100644 --- a/tester/covoar/CoverageWriterTSIM.cc +++ b/tester/covoar/CoverageWriterTSIM.cc @@ -8,10 +8,15 @@ #include #include +#include +#include + +#include + #include "CoverageWriterTSIM.h" namespace Coverage { - + CoverageWriterTSIM::CoverageWriterTSIM() { } @@ -20,7 +25,7 @@ namespace Coverage { { } - + void CoverageWriterTSIM::writeFile( const char* const file, CoverageMapBase* coverage, @@ -37,42 +42,36 @@ namespace Coverage { /* * read the file and update the coverage map passed in */ - coverageFile = fopen( file, "w" ); + coverageFile = ::fopen( file, "w" ); if ( !coverageFile ) { - fprintf( - stderr, - "ERROR: CoverageWriterTSIM::writeFile - unable to open %s\n", - file - ); - exit(-1); + std::ostringstream what; + what << "Unable to open " << file; + throw rld::error( what, "CoverageWriterTSIM::writeFile" ); } - for ( a=lowAddress ; a < highAddress ; a+= 0x80 ) { + for ( a = lowAddress; a < highAddress; a += 0x80 ) { status = fprintf( coverageFile, "%x : ", a ); if ( status == EOF || status == 0 ) { break; } - // fprintf( stderr, "%08x : ", baseAddress ); - for ( i=0 ; i < 0x80 ; i+=4 ) { + for ( i = 0; i < 0x80; i += 4 ) { cover = ((coverage->wasExecuted( a + i )) ? 1 : 0); - status = fprintf( coverageFile, "%d ", cover ); + status = ::fprintf( coverageFile, "%d ", cover ); if ( status == EOF || status == 0 ) { - fprintf( - stderr, - "ERROR: CoverageWriterTSIM:writeFile - write to %s " - "at address 0x%08x failed\n", - file, - a - ); - exit( -1 ); + ::fclose( coverageFile ); + std::ostringstream what; + what << "write to " << file + << " at address 0x" + << std::hex << std::setfill('0') + << std::setw(8) << a + << std::setfill(' ') << std::dec + << "failed"; + throw rld::error( what, "CoverageWriterTSIM::writeFile" ); } - // fprintf( stderr, "%d ", cover ); } - fprintf( coverageFile, "\n" ); - // fprintf( stderr, "\n" ); - + ::fprintf( coverageFile, "\n" ); } - fclose( coverageFile ); + ::fclose( coverageFile ); } } diff --git a/tester/covoar/DesiredSymbols.cc b/tester/covoar/DesiredSymbols.cc index 84296f7..a38860a 100644 --- a/tester/covoar/DesiredSymbols.cc +++ b/tester/covoar/DesiredSymbols.cc @@ -37,7 +37,7 @@ namespace Coverage { { } - bool DesiredSymbols::load( + void DesiredSymbols::load( const std::string& symbolsSet, const std::string& buildTarget, const std::string& buildBSP, @@ -45,7 +45,6 @@ namespace Coverage { ) { rld::files::cache cache; - bool r = true; // // Load the INI file looking for a top level: @@ -103,20 +102,12 @@ namespace Coverage { const rld::symbols::symbol& sym = *(kv.second); set[sym.name()] = *(new SymbolInformation); } - - } catch (rld::error re) { - std::cerr << "error: " - << re.where << ": " << re.what - << std::endl; - r = false; } catch (...) { cache.close(); throw; } cache.close(); - - return r; } void DesiredSymbols::preprocess( void ) @@ -332,12 +323,11 @@ namespace Coverage { symbolSet_t::iterator itr = set.find( symbolName ); if (itr == set.end()) { - std::cerr << "ERROR: DesiredSymbols::createCoverageMap - Unable to create " - << "unified coverage map for " - << symbolName - << " because it is NOT a desired symbol" - << std::endl; - exit( -1 ); + std::ostringstream what; + what << "Unable to create unified coverage map for " + << symbolName + << " because it is NOT a desired symbol"; + throw rld::error( what, "DesiredSymbols::createCoverageMap" ); } // If we have already created a coverage map, ... @@ -373,17 +363,6 @@ namespace Coverage { highAddress = size - 1; aCoverageMap = new CoverageMap( exefileName, 0, highAddress ); - if (!aCoverageMap) { - - fprintf( - stderr, - "ERROR: DesiredSymbols::createCoverageMap - Unable to allocate " - "coverage map for %s:%s\n", - exefileName.c_str(), - symbolName.c_str() - ); - exit( -1 ); - } if ( Verbose ) fprintf( @@ -490,11 +469,11 @@ namespace Coverage { symbolSet_t::iterator itr = set.find( symbolName ); if (itr == set.end()) { - std::cerr << "ERROR: DesiredSymbols::mergeCoverageMap - Unable to merge " - << "coverage map for %s because it is NOT a desired symbol" - << symbolName - << std::endl; - exit( -1 ); + std::ostringstream what; + what << "Unable to merge coverage map for " + << symbolName + << " because it is NOT a desired symbol"; + throw rld::error( what, "DesiredSymbols::mergeCoverageMap" ); } // Ensure that the source and destination coverage maps diff --git a/tester/covoar/DesiredSymbols.h b/tester/covoar/DesiredSymbols.h index 21c5602..5c45af8 100644 --- a/tester/covoar/DesiredSymbols.h +++ b/tester/covoar/DesiredSymbols.h @@ -297,9 +297,8 @@ namespace Coverage { * @param[in] symbolsSet An INI format file of the symbols to be loaded. * @param[in] buildTarget The build target * @param[in] buildBSP The BSP - * @return Returns false if the load fails. */ - bool load( + void load( const std::string& symbolsSet, const std::string& buildTarget, const std::string& buildBSP, diff --git a/tester/covoar/ExecutableInfo.cc b/tester/covoar/ExecutableInfo.cc index 1755e93..b1eba68 100644 --- a/tester/covoar/ExecutableInfo.cc +++ b/tester/covoar/ExecutableInfo.cc @@ -25,20 +25,12 @@ namespace Coverage { { if (theLibraryName) libraryName = theLibraryName; - try { - executable.open(); - executable.begin(); - executable.load_symbols(symbols); - debug.begin(executable.elf()); - debug.load_debug(); - } catch (rld::error re) { - std::cerr << "error: " - << re.where << ": " << re.what - << std::endl; - exit(2); - } catch (...) { - exit(2); - } + + executable.open(); + executable.begin(); + executable.load_symbols(symbols); + debug.begin(executable.elf()); + debug.load_debug(); } ExecutableInfo::~ExecutableInfo() diff --git a/tester/covoar/Explanations.cc b/tester/covoar/Explanations.cc index c316a0b..2050b84 100644 --- a/tester/covoar/Explanations.cc +++ b/tester/covoar/Explanations.cc @@ -1,7 +1,7 @@ /*! @file Explanations.cc * @brief Explanations Implementation * - * This file contains the implementation of the functions + * This file contains the implementation of the functions * which provide a base level of functionality of a Explanations. */ @@ -10,6 +10,8 @@ #include #include +#include + #include "Explanations.h" #include "app_common.h" @@ -36,14 +38,11 @@ namespace Coverage { if (!explanations) return; - explain = fopen( explanations, "r" ); + explain = ::fopen( explanations, "r" ); if (!explain) { - fprintf( - stderr, - "ERROR: Explanations::load - unable to open explanations file %s\n", - explanations - ); - exit(-1); + std::ostringstream what; + what << "Unable to open " << explanations; + throw rld::error( what, "Explanations::load" ); } while ( 1 ) { @@ -62,47 +61,38 @@ namespace Coverage { // Have we already seen this one? if (set.find( inputBuffer ) != set.end()) { - fprintf( - stderr, - "ERROR: Explanations::load - line %d " - "contains a duplicate explanation (%s)\n", - line, - inputBuffer - ); - exit( -1 ); + std::ostringstream what; + what << "line " << line + << "contains a duplicate explanation (" + << inputBuffer << ")"; + throw rld::error( what, "Explanations::load" ); } // Add the starting line and file e->startingPoint = std::string(inputBuffer); e->found = false; - // Get the classification + // Get the classification cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, explain ); if (cStatus == NULL) { - fprintf( - stderr, - "ERROR: Explanations::load - line %d " - "out of sync at the classification\n", - line - ); - exit( -1 ); + std::ostringstream what; + what << "line " << line + << "out of sync at the classification"; + throw rld::error( what, "Explanations::load" ); } inputBuffer[ strlen(inputBuffer) - 1] = '\0'; e->classification = inputBuffer; line++; - // Get the explanation + // Get the explanation while (1) { cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, explain ); // fprintf( stderr, "%d - %s\n", line, inputBuffer ); if (cStatus == NULL) { - fprintf( - stderr, - "ERROR: Explanations::load - line %d " - "out of sync at the explanation\n", - line - ); - exit( -1 ); + std::ostringstream what; + what << "line " << line + << "out of sync at the explanation"; + throw rld::error( what, "Explanations::load" ); } inputBuffer[ strlen(inputBuffer) - 1] = '\0'; line++; @@ -130,10 +120,8 @@ done: { if (set.find( start ) == set.end()) { #if 0 - fprintf( stderr, - "Warning: Unable to find explanation for %s\n", - start.c_str() - ); + std::cerr << "Warning: Unable to find explanation for " + << start << std::endl; #endif return NULL; } @@ -150,23 +138,21 @@ done: if (!fileName) return; - + notFoundFile = fopen( fileName, "w" ); if (!fileName) { - fprintf( - stderr, - "ERROR: Explanations::writeNotFound - unable to open file %s\n", - fileName - ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << fileName + << "out of sync at the explanation"; + throw rld::error( what, "Explanations::writeNotFound" ); } - + for (std::map::iterator itr = set.begin(); itr != set.end(); itr++) { Explanation e = (*itr).second; std::string key = (*itr).first; - + if (!e.found) { notFoundOccurred = true; fprintf( @@ -174,18 +160,17 @@ done: "%s\n", e.startingPoint.c_str() ); - } + } } fclose( notFoundFile ); if (!notFoundOccurred) { if (!unlink( fileName )) { - fprintf( stderr, - "Warning: Unable to unlink %s\n\n", - fileName - ); + std::cerr << "Warning: Unable to unlink " << fileName + << std::endl + << std::endl; } - } + } } } diff --git a/tester/covoar/ObjdumpProcessor.cc b/tester/covoar/ObjdumpProcessor.cc index d41906c..c98dad7 100644 --- a/tester/covoar/ObjdumpProcessor.cc +++ b/tester/covoar/ObjdumpProcessor.cc @@ -149,26 +149,23 @@ namespace Coverage { dlinfoName += ".dlinfo"; // Read load address. - loadAddressFile = fopen( dlinfoName.c_str(), "r" ); + loadAddressFile = ::fopen( dlinfoName.c_str(), "r" ); if (!loadAddressFile) { - fprintf( stderr, METHOD "unable to open %s\n", dlinfoName.c_str() ); - exit( -1 ); + std::ostringstream what; + what << "Unable to open " << dlinfoName; + throw rld::error( what, METHOD ); } // Process the dlinfo file. while ( 1 ) { // Get a line. - cStatus = fgets( inputBuffer, MAX_LINE_LENGTH, loadAddressFile ); + cStatus = ::fgets( inputBuffer, MAX_LINE_LENGTH, loadAddressFile ); if (cStatus == NULL) { - fprintf( - stderr, - METHOD "library %s not found in %s\n", - Library.c_str(), - dlinfoName.c_str() - ); - fclose( loadAddressFile ); - exit( -1 ); + ::fclose( loadAddressFile ); + std::ostringstream what; + what << "library " << Library << " not found in " << dlinfoName; + throw rld::error( what, METHOD ); } sscanf( inputBuffer, "%s %x", inLibName, &offset ); std::string tmp = inLibName; @@ -179,7 +176,7 @@ namespace Coverage { } } - fclose( loadAddressFile ); + ::fclose( loadAddressFile ); return address; #undef METHOD diff --git a/tester/covoar/ReportsHtml.cc b/tester/covoar/ReportsHtml.cc index 247253c..ebc6ee0 100644 --- a/tester/covoar/ReportsHtml.cc +++ b/tester/covoar/ReportsHtml.cc @@ -2,6 +2,8 @@ #include #include +#include + #include "ReportsHtml.h" #include "app_common.h" #include "CoverageRanges.h" @@ -24,7 +26,7 @@ "\n" #else #define TABLE_HEADER_CLASS -#define TABLE_FOOTER +#define TABLE_FOOTER #endif namespace Coverage { @@ -56,7 +58,7 @@ namespace Coverage { _t, _n ); FILE* aFile; - + // Open the file aFile = OpenFile( fileName ); @@ -77,7 +79,7 @@ namespace Coverage { aFile, "Coverage Analysis Reports\n" "
%s
\n", - asctime( localtime(×tamp_m) ) + asctime( localtime(×tamp_m) ) ); fprintf( aFile, "