Looks ok on a phone. On Sat, Apr 28, 2018, 4:15 AM Chris Johns <chr...@rtems.org> wrote:
> This is a clean up. > --- > tester/covoar/covoar.cc | 243 > +++++++++++++++++++----------------------------- > 1 file changed, 98 insertions(+), 145 deletions(-) > > diff --git a/tester/covoar/covoar.cc b/tester/covoar/covoar.cc > index 81c90d2..5c87402 100644 > --- a/tester/covoar/covoar.cc > +++ b/tester/covoar/covoar.cc > @@ -116,30 +116,26 @@ static void createBuildPath(Executables& > executablesToAnalyze, > */ > void usage(const std::string& progname) > { > - fprintf( > - stderr, > - "Usage: %s [-v] -T TARGET -f FORMAT [-E EXPLANATIONS] -1 EXECUTABLE > coverage1 ... coverageN\n" > - "--OR--\n" > - "Usage: %s [-v] -T TARGET -f FORMAT [-E EXPLANATIONS] -e > EXE_EXTENSION -c COVERAGEFILE_EXTENSION EXECUTABLE1 ... EXECUTABLE2\n" > - "\n" > - " -v - verbose at initialization\n" > - " -T TARGET - target name\n" > - " -f FORMAT - coverage file format " > - "(RTEMS, QEMU, TSIM or Skyeye)\n" > - " -E EXPLANATIONS - name of file with explanations\n" > - " -s SYMBOL_SET_FILE - path to the INI format symbol sets\n" > - " -1 EXECUTABLE - name of executable to get symbols > from\n" > - " -e EXE_EXTENSION - extension of the executables to > analyze\n" > - " -c COVERAGEFILE_EXTENSION - extension of the coverage files to > analyze\n" > - " -g GCNOS_LIST - name of file with list of *.gcno > files\n" > - " -p PROJECT_NAME - name of the project\n" > - " -C ConfigurationFileName - name of configuration file\n" > - " -O Output_Directory - name of output directory (default=.\n" > - " -d debug - disable cleaning of tempfiles." > - "\n", > - progname.c_str(), > - progname.c_str() > - ); > + std::cerr <<"Usage: " << progname > + <<" [-v] -T TARGET -f FORMAT [-E EXPLANATIONS] -1 EXECUTABLE > coverage1 ... coverageN" << std::endl > + << "--OR--" << std::endl > + << "Usage: " << progname > + << " [-v] -T TARGET -f FORMAT [-E EXPLANATIONS] -e > EXE_EXTENSION -c COVERAGEFILE_EXTENSION EXECUTABLE1 ... EXECUTABLE2" << > std::endl > + << std::endl > + << " -v - verbose at initialization" > << std::endl > + << " -T TARGET - target name" << std::endl > + << " -f FORMAT - coverage file format > (RTEMS, QEMU, TSIM or Skyeye)" << std::endl > + << " -E EXPLANATIONS - name of file with > explanations" << std::endl > + << " -s SYMBOL_SET_FILE - path to the INI format > symbol sets" << std::endl > + << " -1 EXECUTABLE - name of executable to get > symbols from" << std::endl > + << " -e EXE_EXTENSION - extension of the > executables to analyze" << std::endl > + << " -c COVERAGEFILE_EXTENSION - extension of the coverage > files to analyze" << std::endl > + << " -g GCNOS_LIST - name of file with list of > *.gcno files" << std::endl > + << " -p PROJECT_NAME - name of the project" << > std::endl > + << " -C ConfigurationFileName - name of configuration file" > << std::endl > + << " -O Output_Directory - name of output directory > (default=." << std::endl > + << " -d debug - disable cleaning of > tempfile" << std::endl > + << std::endl; > } > > #define PrintableString(_s) \ > @@ -282,21 +278,15 @@ int main( > > // Ensure that the executable is readable. > if (!FileIsReadable( singleExecutable )) { > - fprintf( > - stderr, > - "WARNING: Unable to read executable %s\n", > - singleExecutable > - ); > + std::cerr << "warning: Unable to read executable: " << > singleExecutable > + << std::endl; > } else { > > for (int 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] > - ); > + std::cerr << "warning: Unable to read coverage file: " << > argv[i] > + << std::endl; > } else { > coverageFileNames.push_back( argv[i] ); > } > @@ -321,14 +311,9 @@ int main( > // If not invoked with a single executable, process the remaining > // arguments as executables and derive the coverage file names. > for (int i = optind; i < argc; i++) { > - > // Ensure that the executable is readable. > if (!FileIsReadable( argv[i] )) { > - fprintf( > - stderr, > - "WARNING: Unable to read executable %s\n", > - argv[i] > - ); > + std::cerr << "warning: Unable to read executable: " << argv[i] << > std::endl; > } else { > coverageFileName = argv[i]; > coverageFileName.replace( > @@ -338,11 +323,8 @@ int main( > ); > > if (!FileIsReadable( coverageFileName.c_str() )) { > - fprintf( > - stderr, > - "WARNING: Unable to read coverage file %s\n", > - coverageFileName.c_str() > - ); > + std::cerr << "warning: Unable to read coverage file: " << > coverageFileName > + << std::endl; > } else { > executableInfo = new Coverage::ExecutableInfo( argv[i] ); > executablesToAnalyze.push_back( executableInfo ); > @@ -354,9 +336,7 @@ int main( > > // Ensure that there is at least one executable to process. > if (executablesToAnalyze.empty()) { > - fprintf( > - stderr, "ERROR: No information to analyze\n" > - ); > + std::cerr << "error: No information to analyze" << std::endl; > exit(EXIT_FAILURE); > } > > @@ -389,33 +369,20 @@ int main( > > if (Verbose) { > if (singleExecutable) { > - fprintf( > - stderr, > - "Processing a single executable and multiple coverage files\n" > - ); > + std::cerr << "Processing a single executable and multiple coverage > files" > + << std::endl; > } else { > - fprintf( > - stderr, > - "Processing multiple executable/coverage file pairs\n" > - ); > + std::cerr << "Processing multiple executable/coverage file pairs" > << std::endl; > } > - fprintf( stderr, "Coverage Format : %s\n", format ); > - fprintf( stderr, "Target : %s\n", buildTarget.c_str() ); > - fprintf( stderr, "\n" ); > + std::cerr << "Coverage Format : " << format << std::endl > + << "Target : " << buildTarget.c_str() << std::endl > + << std::endl; > > // Process each executable/coverage file pair. > Executables::iterator eitr = executablesToAnalyze.begin(); > - for (CoverageNames::iterator citr = coverageFileNames.begin(); > - citr != coverageFileNames.end(); > - citr++) { > - > - fprintf( > - stderr, > - "Coverage file %s for executable %s\n", > - (*citr).c_str(), > - ((*eitr)->getFileName()).c_str() > - ); > - > + for (const auto& cname : coverageFileNames) { > + std::cerr << "Coverage file " << cname > + << " for executable: " << (*eitr)->getFileName() << > std::endl; > if (!singleExecutable) > eitr++; > } > @@ -439,7 +406,7 @@ int main( > } > > if ( Verbose ) > - std::cout << "Analyzing " << SymbolsToAnalyze->set.size() > + std::cerr << "Analyzing " << SymbolsToAnalyze->set.size() > << " symbols" << std::endl; > > // Create explanations. > @@ -450,7 +417,7 @@ int main( > // Create coverage map reader. > coverageReader = Coverage::CreateCoverageReader(coverageFormat); > if (!coverageReader) { > - fprintf( stderr, "ERROR: Unable to create coverage file reader\n" ); > + std::cerr << "error: Unable to create coverage file reader" << > std::endl; > exit(EXIT_FAILURE); > } > > @@ -458,27 +425,18 @@ int main( > objdumpProcessor = new Coverage::ObjdumpProcessor(); > > // Prepare each executable for analysis. > - for (Executables::iterator eitr = executablesToAnalyze.begin(); > - eitr != executablesToAnalyze.end(); > - eitr++) { > - > - if (Verbose) { > - fprintf( > - stderr, > - "Extracting information from %s\n", > - ((*eitr)->getFileName()).c_str() > - ); > - } > + for (auto& exe : executablesToAnalyze) { > + if (Verbose) > + std::cerr << "Extracting information from: " << exe->getFileName() > + << std::endl; > > // If a dynamic library was specified, determine the load address. > if (dynamicLibrary) { > - (*eitr)->setLoadAddress( > - objdumpProcessor->determineLoadAddress( *eitr ) > - ); > + exe->setLoadAddress( objdumpProcessor->determineLoadAddress( exe ) > ); > } > > // Load the objdump for the symbols in this executable. > - objdumpProcessor->load( *eitr, objdumpFile, err ); > + objdumpProcessor->load( exe, objdumpFile, err ); > } > > // > @@ -488,23 +446,20 @@ int main( > // Process each executable/coverage file pair. > Executables::iterator eitr = executablesToAnalyze.begin(); > for (const auto& cname : coverageFileNames) { > - if (Verbose) { > - fprintf( > - stderr, > - "Processing coverage file %s for executable %s\n", > - cname.c_str(), > - ((*eitr)->getFileName()).c_str() > - ); > - } > + Coverage::ExecutableInfo* exe = *eitr; > + if (Verbose) > + std::cerr << "Processing coverage file " << cname > + << " for executable " << exe->getFileName() > + << std::endl; > > // Process its coverage file. > - coverageReader->processFile( cname.c_str(), *eitr ); > + coverageReader->processFile( cname.c_str(), exe ); > > // Merge each symbols coverage map into a unified coverage map. > - (*eitr)->mergeCoverage(); > + exe->mergeCoverage(); > > // DEBUG Print ExecutableInfo content > - //(*eitr)->dumpExecutableInfo(); > + //exe->dumpExecutableInfo(); > > if (!singleExecutable) { > eitr++; > @@ -512,72 +467,69 @@ int main( > } > > // Do necessary preprocessing of uncovered ranges and branches > - if (Verbose) { > - fprintf( stderr, "Preprocess uncovered ranges and branches\n" ); > - } > + if (Verbose) > + std::cerr << "Preprocess uncovered ranges and branches" << std::endl; > + > SymbolsToAnalyze->preprocess(); > > // > // Generate Gcov reports > // > - if (Verbose) { > - fprintf( stderr, "Generating Gcov reports...\n"); > - } > - gcnosFile = fopen ( gcnosFileName , "r" ); > - > - if ( !gcnosFile ) { > - fprintf( stderr, "Unable to open %s\n", gcnosFileName ); > - } > - else { > - while ( fscanf( gcnosFile, "%s", inputBuffer ) != EOF) { > - gcovFile = new Gcov::GcovData(); > - strcpy( gcnoFileName, inputBuffer ); > - > - if ( Verbose ) { > - fprintf( stderr, "Processing file: %s\n", gcnoFileName ); > - } > + if (gcnosFileName) { > + if (Verbose) > + std::cerr << "Generating Gcov reports..." << std::endl; > + > + gcnosFile = fopen ( gcnosFileName , "r" ); > + > + if ( !gcnosFile ) > + std::cerr << "Unable to open " << gcnosFileName << std::endl; > + else { > + while ( fscanf( gcnosFile, "%s", inputBuffer ) != EOF) { > + gcovFile = new Gcov::GcovData(); > + strcpy( gcnoFileName, inputBuffer ); > + > + if ( Verbose ) > + std::cerr << "Processing file: " << gcnoFileName << std::endl; > + > + if ( gcovFile->readGcnoFile( gcnoFileName ) ) { > + // Those need to be in this order > + gcovFile->processCounters(); > + gcovFile->writeReportFile(); > + gcovFile->writeGcdaFile(); > + gcovFile->writeGcovFile(); > + } > > - if ( gcovFile->readGcnoFile( gcnoFileName ) ) { > - // Those need to be in this order > - gcovFile->processCounters(); > - gcovFile->writeReportFile(); > - gcovFile->writeGcdaFile(); > - gcovFile->writeGcovFile(); > + delete gcovFile; > } > - > - delete gcovFile; > + fclose( gcnosFile ); > } > - fclose( gcnosFile ); > } > > // Determine the uncovered ranges and branches. > - if (Verbose) { > - fprintf( stderr, "Computing uncovered ranges and branches\n" ); > - } > + if (Verbose) > + std::cerr << "Computing uncovered ranges and branches" << std::endl; > + > SymbolsToAnalyze->computeUncovered(); > > // Calculate remainder of statistics. > - if (Verbose) { > - fprintf( stderr, "Calculate statistics\n" ); > - } > + if (Verbose) > + std::cerr << "Calculate statistics" << std::endl; > + > SymbolsToAnalyze->calculateStatistics(); > > // Look up the source lines for any uncovered ranges and branches. > - if (Verbose) { > - fprintf( > - stderr, "Looking up source lines for uncovered ranges and > branches\n" > - ); > - } > + if (Verbose) > + std::cerr << "Looking up source lines for uncovered ranges and > branches" > + << std::endl; > + > SymbolsToAnalyze->findSourceForUncovered(); > > // > // Report the coverage data. > // > - if (Verbose) { > - fprintf( > - stderr, "Generate Reports\n" > - ); > - } > + if (Verbose) > + std::cerr << "Generate Reports" << std::endl; > + > Coverage::GenerateReports(); > > // Write explanations that were not found. > @@ -588,9 +540,9 @@ int main( > notFound += "/"; > notFound += "ExplanationsNotFound.txt"; > > - if (Verbose) { > - fprintf( stderr, "Writing Not Found Report (%s)\n", > notFound.c_str() ); > - } > + if (Verbose) > + std::cerr << "Writing Not Found Report (" << notFound<< ')' << > std::endl; > + > AllExplanations->writeNotFound( notFound.c_str() ); > } > > @@ -603,5 +555,6 @@ int main( > syms.override( "symbols_list" ); > syms.keep(); > } > + > return 0; > } > -- > 2.15.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel