summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2004-01-12 19:59:02 -0500
committerAli Saidi <saidi@eecs.umich.edu>2004-01-12 19:59:02 -0500
commita44248aab04a3b48864308a478ad676def175158 (patch)
treecfb15bdf2876bb4d0bef32c129b757c46fc1018a
parent60a1b35e4db6dc7ebf189a6aca4549d85480d5ce (diff)
downloadgem5-a44248aab04a3b48864308a478ad676def175158.tar.xz
Added code to print out the symbol if one exists for an address
cpu/exetrace.cc: added code to print out symbol if one is found for address kern/linux/linux_system.cc: added code to set the debugSymbolTable to the kernel symbol table --HG-- extra : convert_revision : 191d7608d04fa42baef5e618c0bbbf5ad4001031
-rw-r--r--cpu/exetrace.cc10
-rw-r--r--kern/linux/linux_system.cc3
2 files changed, 11 insertions, 2 deletions
diff --git a/cpu/exetrace.cc b/cpu/exetrace.cc
index 3e8877e93..a72242232 100644
--- a/cpu/exetrace.cc
+++ b/cpu/exetrace.cc
@@ -48,11 +48,12 @@ using namespace std;
//
-const SymbolTable *debugSymbolTable = NULL;
+SymbolTable *debugSymbolTable = NULL;
void
Trace::InstRecord::dump(ostream &outs)
{
+
if (flags[PRINT_CYCLE])
ccprintf(outs, "%7d: ", cycle);
@@ -64,7 +65,12 @@ Trace::InstRecord::dump(ostream &outs)
if (flags[PRINT_THREAD_NUM])
outs << "T" << thread << " : ";
- outs << "0x" << hex << PC << " : ";
+
+ std::string str;
+ if(debugSymbolTable->findSymbol(data.as_int, str))
+ outs << "@" << setw(17) << str << " : ";
+ else
+ outs << "0x" << hex << PC << " : ";
//
// Print decoded instruction
diff --git a/kern/linux/linux_system.cc b/kern/linux/linux_system.cc
index bdaebbe70..fe655ad74 100644
--- a/kern/linux/linux_system.cc
+++ b/kern/linux/linux_system.cc
@@ -41,6 +41,8 @@
#include "targetarch/isa_traits.hh"
#include "targetarch/vtophys.hh"
+extern SymbolTable *debugSymbolTable;
+
//un-comment this to see the state of call stack when it changes.
//#define SW_DEBUG
@@ -71,6 +73,7 @@ LinuxSystem::LinuxSystem(const string _name, const uint64_t _init_param,
if (!kernel->loadGlobalSymbols(kernelSymtab))
panic("could not load kernel symbols\n");
+ debugSymbolTable = kernelSymtab;
if (!console->loadGlobalSymbols(consoleSymtab))
panic("could not load console symbols\n");