summaryrefslogtreecommitdiff
path: root/covoar/SymbolTable.cc
diff options
context:
space:
mode:
Diffstat (limited to 'covoar/SymbolTable.cc')
-rw-r--r--covoar/SymbolTable.cc123
1 files changed, 0 insertions, 123 deletions
diff --git a/covoar/SymbolTable.cc b/covoar/SymbolTable.cc
deleted file mode 100644
index 062e0a3..0000000
--- a/covoar/SymbolTable.cc
+++ /dev/null
@@ -1,123 +0,0 @@
-/*! @file SymbolTable.cc
- * @brief SymbolTable Implementation
- *
- * This file contains ...
- */
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "SymbolTable.h"
-#include "app_common.h"
-
-namespace Coverage {
-
- SymbolTable::SymbolTable()
- {
- }
-
- SymbolTable::~SymbolTable()
- {
- }
-
- void SymbolTable::addSymbol(
- const std::string& symbol,
- const uint32_t start,
- const uint32_t length
- )
- {
- uint32_t end = 0;
- symbol_entry_t entry;
- symbolInfo_t symbolData;
-
- // Add an entry to the address map.
- end = start + length - 1;
- entry.low = start;
- entry.high = end;
- entry.symbol = symbol;
- contents[ end ] = entry;
-
- // Add an entry to the symbol information map.
- symbolData.startingAddress = start;
- symbolData.length = length;
-
- if ( info[ symbol ].empty() == false ) {
- if ( info[ symbol ].front().length != length ) {
- fprintf(stderr,
- "ERROR==> Different lengths for the symbol %s (%d and %d)\n",
- symbol.c_str(),
- info[ symbol ].front().length,
- length
- );
- exit( 0 );
- }
- }
-
- info[ symbol ].push_back( symbolData );
- }
-
- SymbolTable::symbolInfo* SymbolTable::getInfo(
- const std::string& symbol
- )
- {
- info_t::iterator it = info.find( symbol );
-
- if (it == info.end())
- return NULL;
- else
- return (&(it->second));
- }
-
- uint32_t SymbolTable::getLength(
- const std::string& symbol
- )
- {
- info_t::iterator it = info.find( symbol );
-
- if (it == info.end())
- return 0;
- else
- return ((*it).second.front().length);
- }
-
- std::string SymbolTable::getSymbol(
- uint32_t address
- )
- {
- contents_t::iterator it;
-
- // Ensure that the symbol table is not empty.
- if ( contents.size() == 0 )
- return "";
-
- // Find the first entry whose end address is greater
- // than the specified address.
- it = contents.lower_bound( address );
-
- // If an entry was found and its low address is less than or
- // equal to the specified address, then return the symbol.
- if ((it != contents.end()) && ((it->second).low <= address ))
- return (it->second).symbol;
-
- return "";
- }
-
- void SymbolTable::dumpSymbolTable( void )
- {
- symbolInfo symbolTable;
- symbolInfoIterator_t symbolIterator;
- infoIterator_t infoIterator;
-
- for (infoIterator = info.begin() ; infoIterator != info.end(); infoIterator++)
- {
- for (symbolIterator = infoIterator->second.begin() ; symbolIterator != infoIterator->second.end(); symbolIterator++)
- {
- fprintf( stdout, "%s:\tStarting address = %#x\tLength = %u\n", infoIterator->first.c_str(), symbolIterator->startingAddress, symbolIterator->length );
- }
- }
- }
-
-}