summaryrefslogtreecommitdiff
path: root/covoar/CoverageMapBase.cc
diff options
context:
space:
mode:
Diffstat (limited to 'covoar/CoverageMapBase.cc')
-rw-r--r--covoar/CoverageMapBase.cc399
1 files changed, 0 insertions, 399 deletions
diff --git a/covoar/CoverageMapBase.cc b/covoar/CoverageMapBase.cc
deleted file mode 100644
index 407ef5f..0000000
--- a/covoar/CoverageMapBase.cc
+++ /dev/null
@@ -1,399 +0,0 @@
-
-/*! @file CoverageMapBase.cc
- * @brief CoverageMapBase Implementation
- *
- * This file contains the implementation of the functions
- * which provide a base level of functionality of a CoverageMap.
- */
-
-#include <libgen.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "CoverageMapBase.h"
-
-namespace Coverage {
-
- CoverageMapBase::CoverageMapBase(
- uint32_t low,
- uint32_t high
- )
- {
- uint32_t a;
- AddressRange_t range;
-
- range.lowAddress = low;
- range.highAddress = high;
- RangeList.push_back( range );
-
- Size = high - low + 1;
-
- Info = new perAddressInfo_t[ Size ];
-
- for (a=0; a<Size; a++) {
-
- perAddressInfo_t *i = &Info[ a ];
-
- i->isStartOfInstruction = false;
- i->wasExecuted = 0;
- i->isBranch = false;
- i->isNop = false;
- i->wasTaken = 0;
- i->wasNotTaken = 0;
- }
- }
-
- CoverageMapBase::~CoverageMapBase()
- {
- if (Info)
- delete Info;
- }
-
- void CoverageMapBase::Add( uint32_t low, uint32_t high )
- {
- AddressRange_t range;
-
- range.lowAddress = low;
- range.highAddress = high;
- RangeList.push_back( range );
- }
-
- bool CoverageMapBase::determineOffset(
- uint32_t address,
- uint32_t *offset
- )const
- {
- AddressRange::const_iterator itr;
-
- for ( itr = RangeList.begin(); itr != RangeList.end(); itr++ ) {
- if ((address >= itr->lowAddress) && (address <= itr->highAddress)){
- *offset = address - itr->lowAddress;
- return true;
- }
- }
- *offset = 0;
- return false;
- }
-
-
- void CoverageMapBase::dump( void ) const {
-
- uint32_t a;
- perAddressInfo_t* entry;
-
- fprintf( stderr, "Coverage Map Contents:\n" );
-
- /*
- * XXX - Dump is only marking the first Address Range.
- */
-
- for (a = 0; a < Size; a++) {
-
- entry = &Info[ a ];
-
- fprintf(
- stderr,
- "0x%x - isStartOfInstruction = %s, wasExecuted = %s\n",
- a + RangeList.front().lowAddress,
- entry->isStartOfInstruction ? "TRUE" : "FALSE",
- entry->wasExecuted ? "TRUE" : "FALSE"
- );
- fprintf(
- stderr,
- " isBranch = %s, wasTaken = %s, wasNotTaken = %s\n",
- entry->isBranch ? "TRUE" : "FALSE",
- entry->wasTaken ? "TRUE" : "FALSE",
- entry->wasNotTaken ? "TRUE" : "FALSE"
- );
- }
- }
-
- bool CoverageMapBase::getBeginningOfInstruction(
- uint32_t address,
- uint32_t* beginning
- ) const
- {
- bool status = false;
- uint32_t start;
- AddressRange_t range;
-
-
- status = getRange( address, &range );
- if ( status != true )
- return status;
-
- start = address;
-
- while (start >= range.lowAddress ) {
- if (Info[ start - range.lowAddress ].isStartOfInstruction) {
- *beginning = start;
- status = true;
- break;
- }
- else
- start--;
- }
-
- return status;
- }
-
- int32_t CoverageMapBase::getFirstLowAddress() const
- {
- return RangeList.front().lowAddress;
- }
-
- bool CoverageMapBase::getRange( uint32_t address, AddressRange_t *range ) const
- {
- AddressRange::const_iterator itr;
-
- for ( itr = RangeList.begin(); itr != RangeList.end(); itr++ ) {
- if ((address >= itr->lowAddress) && (address <= itr->highAddress)){
- range->lowAddress = itr->lowAddress;
- range->highAddress = itr->highAddress;
- return true;
- }
- }
-
- range->lowAddress = 0;
- range->highAddress = 0;
-
- return false;
-
- }
-
- uint32_t CoverageMapBase::getSize() const
- {
- return Size;
- }
-
- void CoverageMapBase::setIsStartOfInstruction(
- uint32_t address
- )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].isStartOfInstruction = true;
- }
-
- bool CoverageMapBase::isStartOfInstruction( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return false;
-
- return Info[ offset ].isStartOfInstruction;
- }
-
- void CoverageMapBase::setWasExecuted( uint32_t address )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasExecuted += 1;
- }
-
- void CoverageMapBase::sumWasExecuted( uint32_t address, uint32_t addition)
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasExecuted += addition;
- }
-
- bool CoverageMapBase::wasExecuted( uint32_t address ) const
- {
- uint32_t offset;
- bool result;
-
- result = true;
-
- if (determineOffset( address, &offset ) != true)
- result = false;
-
- if (Info[ offset ].wasExecuted <= 0)
- result = false;
-
- return result;
- }
-
- uint32_t CoverageMapBase::getWasExecuted( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return 0;
-
- return Info[ offset ].wasExecuted;
- }
-
- void CoverageMapBase::setIsBranch(
- uint32_t address
- )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].isBranch = true;
- }
-
- bool CoverageMapBase::isNop( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return false;
-
- return Info[ offset ].isNop;
- }
-
- void CoverageMapBase::setIsNop(
- uint32_t address
- )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].isNop = true;
- }
-
- bool CoverageMapBase::isBranch( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return false;
-
- return Info[ offset ].isBranch;
- }
-
- void CoverageMapBase::setWasTaken(
- uint32_t address
- )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasTaken += 1;
- }
-
- void CoverageMapBase::setWasNotTaken(
- uint32_t address
- )
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasNotTaken += 1;
- }
-
- bool CoverageMapBase::wasAlwaysTaken( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return false;
-
- return (Info[ offset ].wasTaken &&
- !Info[ offset ].wasNotTaken);
- }
-
- bool CoverageMapBase::wasNeverTaken( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return false;
-
- return (!Info[ offset ].wasTaken &&
- Info[ offset ].wasNotTaken);
- }
-
- bool CoverageMapBase::wasNotTaken( uint32_t address ) const
- {
- uint32_t offset;
- bool result;
-
- result = true;
-
- if (determineOffset( address, &offset ) != true)
- result = false;
-
- if (Info[ offset ].wasNotTaken <= 0)
- result = false;
-
- return result;
- }
-
- void CoverageMapBase::sumWasNotTaken( uint32_t address, uint32_t addition)
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasNotTaken += addition;
- }
-
- uint32_t CoverageMapBase::getWasNotTaken( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return 0;
-
- return Info[ offset ].wasNotTaken;
- }
-
- bool CoverageMapBase::wasTaken( uint32_t address ) const
- {
- uint32_t offset;
- bool result;
-
- result = true;
-
- if (determineOffset( address, &offset ) != true)
- result = false;
-
- if (Info[ offset ].wasTaken <= 0)
- result = false;
-
- return result;
- }
-
- void CoverageMapBase::sumWasTaken( uint32_t address, uint32_t addition)
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return;
-
- Info[ offset ].wasTaken += addition;
- }
-
- uint32_t CoverageMapBase::getWasTaken( uint32_t address ) const
- {
- uint32_t offset;
-
- if (determineOffset( address, &offset ) != true)
- return 0;
-
- return Info[ offset ].wasTaken;
- }
-}