From 703c691a6df918d48a57f7efe4c7ad7de506991d Mon Sep 17 00:00:00 2001 From: Ryan Long Date: Mon, 12 Jul 2021 17:53:51 -0400 Subject: TraceWriter: Convert to C++ --- tester/covoar/TraceWriterBase.h | 3 ++- tester/covoar/TraceWriterQEMU.cc | 38 +++++++++++++------------------------- tester/covoar/TraceWriterQEMU.h | 2 +- 3 files changed, 16 insertions(+), 27 deletions(-) (limited to 'tester/covoar') diff --git a/tester/covoar/TraceWriterBase.h b/tester/covoar/TraceWriterBase.h index 9e80dbc..a18c387 100644 --- a/tester/covoar/TraceWriterBase.h +++ b/tester/covoar/TraceWriterBase.h @@ -8,6 +8,7 @@ #define __TRACE_WRITER_BASE_H__ #include +#include #include "TraceReaderBase.h" namespace Trace { @@ -41,7 +42,7 @@ namespace Trace { * @return Returns TRUE if the method succeeded and FALSE if it failed. */ virtual bool writeFile( - const char* const file, + const std::string& file, Trace::TraceReaderBase *log, bool verbose ) = 0; diff --git a/tester/covoar/TraceWriterQEMU.cc b/tester/covoar/TraceWriterQEMU.cc index 1113ba9..0d79d61 100644 --- a/tester/covoar/TraceWriterQEMU.cc +++ b/tester/covoar/TraceWriterQEMU.cc @@ -38,6 +38,7 @@ #include #include +#include #include #include @@ -47,18 +48,6 @@ #include "CoverageMap.h" #include "qemu-traces.h" -#if HAVE_STAT64 -#define STAT stat64 -#else -#define STAT stat -#endif - -#if HAVE_OPEN64 -#define OPEN fopen64 -#else -#define OPEN fopen -#endif - namespace Trace { TraceWriterQEMU::TraceWriterQEMU(): @@ -71,14 +60,14 @@ namespace Trace { } bool TraceWriterQEMU::writeFile( - const char* const file, + const std::string& file, Trace::TraceReaderBase *log, bool verbose ) { struct trace_header header; int status; - FILE* traceFile; + std::ofstream traceFile; uint8_t taken; uint8_t notTaken; @@ -88,16 +77,17 @@ namespace Trace { // // Verify that the TraceList has a non-zero size. // - if ( log->Trace.set.begin() == log->Trace.set.end() ){ - fprintf( stderr, "ERROR: Empty TraceList\n" ); + if ( log->Trace.set.empty() ) { + std::cerr << "ERROR: Empty TraceList" << std::endl; return false; } // // Open the trace file. // - traceFile = ::OPEN( file, "w" ); - if (!traceFile) { + traceFile.open( file ); + + if ( !traceFile.is_open() ) { std::ostringstream what; std::cerr << "Unable to open " << file << std::endl; return false; @@ -116,10 +106,10 @@ namespace Trace { header.machine[0] = 0; // XXX ?? header.machine[1] = 0; // XXX ?? header._pad = 0; - status = ::fwrite( &header, sizeof(trace_header), 1, traceFile ); - if (status != 1) { + + traceFile.write( (char *) &header, sizeof( trace_header ) ); + if ( traceFile.fail() ) { std::cerr << "Unable to write header to " << file << std::endl; - ::fclose( traceFile ); return false; } @@ -166,15 +156,13 @@ namespace Trace { << std::dec << std::setfill(' ') << std::endl; - status = ::fwrite( &entry, sizeof(entry), 1, traceFile ); - if (status != 1) { - ::fclose( traceFile ); + traceFile.write( (char *) &entry, sizeof( entry ) ); + if ( traceFile.fail() ) { std::cerr << "Unable to write entry to " << file << std::endl; return false; } } - ::fclose( traceFile ); return true; } } diff --git a/tester/covoar/TraceWriterQEMU.h b/tester/covoar/TraceWriterQEMU.h index 09c2ddf..aa89860 100644 --- a/tester/covoar/TraceWriterQEMU.h +++ b/tester/covoar/TraceWriterQEMU.h @@ -44,7 +44,7 @@ namespace Trace { * @return Returns TRUE if the method succeeded and FALSE if it failed. */ bool writeFile( - const char* const file, + const std::string& file, Trace::TraceReaderBase *log, bool verbose ); -- cgit v1.2.3