diff -r e63321487404 src/cpu/exetrace.cc --- a/src/cpu/exetrace.cc Wed Mar 20 06:41:23 2013 -0400 +++ b/src/cpu/exetrace.cc Fri Mar 22 14:48:08 2013 -0700 @@ -43,6 +43,7 @@ #include "cpu/thread_context.hh" #include "debug/ExecAll.hh" #include "enums/OpClass.hh" +#include "sim/full_system.hh" using namespace std; using namespace TheISA; @@ -83,13 +84,27 @@ std::string sym_str; Addr sym_addr; Addr cur_pc = pc.instAddr(); - if (debugSymbolTable && Debug::ExecSymbol && !inUserMode(thread) - && debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) { - if (cur_pc != sym_addr) - sym_str += csprintf("+%d",cur_pc - sym_addr); - outs << "@" << sym_str; - } else { - outs << "0x" << hex << cur_pc; + if (FullSystem) { // Full System mode + if (debugSymbolTable && Debug::ExecSymbol && !inUserMode(thread) + && debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) { + if (cur_pc != sym_addr) + sym_str += csprintf("+%d",cur_pc - sym_addr); + outs << "@" << sym_str; + } + else { + outs << "0x" << hex << cur_pc; + } + } + else { // Syscall Emulation mode + if(debugSymbolTable && Debug::ExecSymbol && + debugSymbolTable->findNearestSymbol(cur_pc, sym_str, sym_addr)) { + if (cur_pc != sym_addr) + sym_str += csprintf("+%d", cur_pc - sym_addr); + outs << "0x" << hex << cur_pc << " @" << sym_str; + } + else { + outs << "0x" << hex << cur_pc; + } } if (inst->isMicroop()) {