diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-01-24 21:11:25 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-01-24 21:11:25 +0000 |
commit | 851f8cf138bd14732abe633f4d52b12cbe4e17ee (patch) | |
tree | b92d83645c640be08d5d283d18a21ddcd79fb980 /covoar | |
parent | 2011-01-24 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-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/ChangeLog | 4 | ||||
-rw-r--r-- | covoar/CoverageReaderQEMU.cc | 45 |
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 ); } } |