summaryrefslogtreecommitdiffstats
path: root/tester/covoar/CoverageReaderQEMU.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tester/covoar/CoverageReaderQEMU.cc')
-rw-r--r--tester/covoar/CoverageReaderQEMU.cc35
1 files changed, 10 insertions, 25 deletions
diff --git a/tester/covoar/CoverageReaderQEMU.cc b/tester/covoar/CoverageReaderQEMU.cc
index a44097d..cef09b3 100644
--- a/tester/covoar/CoverageReaderQEMU.cc
+++ b/tester/covoar/CoverageReaderQEMU.cc
@@ -20,12 +20,6 @@
#include "qemu-traces.h"
-#if HAVE_OPEN64
-#define OPEN fopen64
-#else
-#define OPEN fopen
-#endif
-
namespace Coverage {
CoverageReaderQEMU::CoverageReaderQEMU()
@@ -38,14 +32,13 @@ namespace Coverage {
}
void CoverageReaderQEMU::processFile(
- const char* const file,
+ const std::string& file,
ExecutableInfo* const executableInformation
)
{
struct trace_header header;
uintptr_t i;
- int status;
- FILE* traceFile;
+ std::ifstream traceFile;
uint8_t taken;
uint8_t notTaken;
uint8_t branchInfo;
@@ -57,16 +50,15 @@ namespace Coverage {
//
// Open the coverage file and read the header.
//
- traceFile = ::OPEN( file, "r" );
- if (!traceFile) {
+ traceFile.open( file );
+ if ( !traceFile.is_open() ) {
std::ostringstream what;
what << "Unable to open " << file;
throw rld::error( what, "CoverageReaderQEMU::processFile" );
}
- status = ::fread( &header, sizeof(trace_header), 1, traceFile );
- if (status != 1) {
- ::fclose( traceFile );
+ traceFile.read( (char *) &header, sizeof( trace_header ) );
+ if ( traceFile.fail() || traceFile.gcount() != sizeof( trace_header ) ) {
std::ostringstream what;
what << "Unable to read header from " << file;
throw rld::error( what, "CoverageReaderQEMU::processFile" );
@@ -80,22 +72,16 @@ namespace Coverage {
CoverageMapBase *aCoverageMap = NULL;
struct trace_entry entries[ENTRIES];
struct trace_entry *entry;
- int num_entries;
-
// Read and process each line of the coverage file.
- num_entries = ::fread(
- entries,
- sizeof(struct trace_entry),
- ENTRIES,
- traceFile
- );
- if (num_entries == 0)
+ traceFile.read( (char *) entries, sizeof( struct trace_entry ) );
+ if ( traceFile.gcount() == 0 ) {
break;
+ }
// Get the coverage map for each entry. Note that the map is
// the same for each entry in the coverage map
- for (int count=0; count<num_entries; count++) {
+ for ( int count = 0; count < traceFile.gcount(); count++ ) {
entry = &entries[count];
@@ -134,6 +120,5 @@ namespace Coverage {
}
}
}
- ::fclose( traceFile );
}
}