Fix the sampler for real this time
[gem5.git] / cpu / exetrace.cc
index ce6b0c5442dda4d6e06f8ebf2b80bf6be5efca0d..ff7e90c9ec670e79bb0be5a2a63584f469de9e41 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003 The Regents of The University of Michigan
+ * Copyright (c) 2001-2004 The Regents of The University of Michigan
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -48,11 +48,10 @@ using namespace std;
 //
 
 
-const SymbolTable *debugSymbolTable = NULL;
-
 void
 Trace::InstRecord::dump(ostream &outs)
 {
+
     if (flags[PRINT_CYCLE])
         ccprintf(outs, "%7d: ", cycle);
 
@@ -64,7 +63,18 @@ Trace::InstRecord::dump(ostream &outs)
     if (flags[PRINT_THREAD_NUM])
         outs << "T" << thread << " : ";
 
-    outs << "0x" << hex << PC << " : ";
+
+    std::string sym_str;
+    Addr sym_addr;
+    if (debugSymbolTable
+        && debugSymbolTable->findNearestSymbol(PC, sym_str, sym_addr)) {
+        if (PC != sym_addr)
+            sym_str += csprintf("+%d", PC - sym_addr);
+        outs << "@" << sym_str << " : ";
+    }
+    else {
+        outs << "0x" << hex << PC << " : ";
+    }
 
     //
     //  Print decoded instruction
@@ -120,7 +130,6 @@ Trace::InstRecord::dump(ostream &outs)
     //  End of line...
     //
     outs << endl;
-    outs.flush();
 }