summaryrefslogtreecommitdiffstats
path: root/covoar
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2011-01-24 21:11:25 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2011-01-24 21:11:25 +0000
commit851f8cf138bd14732abe633f4d52b12cbe4e17ee (patch)
treeb92d83645c640be08d5d283d18a21ddcd79fb980 /covoar
parent2011-01-24 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-testing-851f8cf138bd14732abe633f4d52b12cbe4e17ee.tar.bz2
2011-01-24 Joel Sherrill <joel.sherrilL@OARcorp.com>
* CoverageReaderQEMU.cc: Finetune debug.
Diffstat (limited to 'covoar')
-rw-r--r--covoar/ChangeLog4
-rw-r--r--covoar/CoverageReaderQEMU.cc45
2 files changed, 31 insertions, 18 deletions
diff --git a/covoar/ChangeLog b/covoar/ChangeLog
index f11afcd..d51ef75 100644
--- a/covoar/ChangeLog
+++ b/covoar/ChangeLog
@@ -1,3 +1,7 @@
+2011-01-24 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ * CoverageReaderQEMU.cc: Finetune debug.
+
2011-01-24 Joel Sherrill <joel.sherrill@oarcorp.com>
* CoverageReaderQEMU.cc: Add debug for trace block having a bad address
diff --git a/covoar/CoverageReaderQEMU.cc b/covoar/CoverageReaderQEMU.cc
index e818cc2..a7f16ac 100644
--- a/covoar/CoverageReaderQEMU.cc
+++ b/covoar/CoverageReaderQEMU.cc
@@ -139,28 +139,37 @@ namespace Coverage {
}
}
- // Determine if additional branch information is available.
- if ( (entry->op & branchInfo) != 0 ) {
+ // Determine if additional branch information is available.
+ if ( (entry->op & branchInfo) != 0 ) {
unsigned int a = entry->pc + entry->size - 1;
-if ( (entry->pc < aCoverageMap->getLowAddress()) ||
- (entry->pc > aCoverageMap->getHighAddress()) )
- fprintf( stderr, "*** entry PC of trace block is too low\n" );
-
-if ( (a < aCoverageMap->getLowAddress()) ||
- (a > aCoverageMap->getHighAddress()) )
- fprintf( stderr, "*** last byte of trace block is too high\n" );
-
- while (!aCoverageMap->isStartOfInstruction(a))
- a--;
- if (entry->op & taken) {
- aCoverageMap->setWasTaken( a );
- } else if (entry->op & notTaken) {
- aCoverageMap->setWasNotTaken( a );
+ if ( (entry->pc < aCoverageMap->getLowAddress()) ||
+ (entry->pc > aCoverageMap->getHighAddress()) ||
+ (a < aCoverageMap->getLowAddress()) ||
+ (a > aCoverageMap->getHighAddress()) ) {
+ fprintf(
+ stderr,
+ "*** Trace block is inconsistent with coverage map\n"
+ "*** Trace block (0x%08x - 0x%08x) for %d bytes\n"
+ "*** Coverage map (0x%08x - 0x%08x) for %d bytes\n",
+ entry->pc,
+ a,
+ entry->size,
+ aCoverageMap->getLowAddress(),
+ aCoverageMap->getHighAddress(),
+ aCoverageMap->getHighAddress() - aCoverageMap->getLowAddress()
+ );
+ } else {
+ while (!aCoverageMap->isStartOfInstruction(a))
+ a--;
+ if (entry->op & taken) {
+ aCoverageMap->setWasTaken( a );
+ } else if (entry->op & notTaken) {
+ aCoverageMap->setWasNotTaken( a );
+ }
}
- }
+ }
}
}
-
fclose( traceFile );
}
}