cpu: prefix ExecEnable to the native trace to match DPRINTF
authorCiro Santilli <ciro.santilli@arm.com>
Tue, 8 Oct 2019 13:52:03 +0000 (14:52 +0100)
committerCiro Santilli <ciro.santilli@arm.com>
Tue, 26 Nov 2019 12:46:59 +0000 (12:46 +0000)
The trace mechanism appears to be the only debug flag that does not
go through DPRINTF, presumably for performance reasons.

This patch manually adds that to make things uniform with other debug
flags, e.g. with FmtFlag,ExecAll,SyscallBase a sample output looks like
(truncated to fit into commit message lengths):

   0: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue
 500: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+4
1000: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+8
1500: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+12
2000: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+16
2500: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+20
3000: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+24
3500: ExecEnable: system.cpu : A0 T0 : @asm_main_after_prologue+28

Change-Id: Ic371ebc8b0827656f1b78fcfd3f28505a5100274
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22007
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/cpu/exetrace.cc
src/cpu/exetrace.hh

index bbfd3d3cda313c43b4edcbdd01bfab92603e9fbc..aeb17078c7f141873029beb88fccf122eb0bc689 100644 (file)
@@ -46,6 +46,7 @@
 #include "cpu/exetrace.hh"
 
 #include <iomanip>
+#include <sstream>
 
 #include "arch/isa_traits.hh"
 #include "arch/utility.hh"
@@ -63,16 +64,10 @@ using namespace TheISA;
 
 namespace Trace {
 
-void
-ExeTracerRecord::dumpTicks(ostream &outs)
-{
-    ccprintf(outs, "%7d: ", when);
-}
-
 void
 Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
 {
-    ostream &outs = Trace::output();
+    std::stringstream outs;
 
     if (!Debug::ExecUser || !Debug::ExecKernel) {
         bool in_user_mode = TheISA::inUserMode(thread);
@@ -80,11 +75,6 @@ Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
         if (!in_user_mode && !Debug::ExecKernel) return;
     }
 
-    if (!DTRACE(FmtTicksOff))
-        dumpTicks(outs);
-
-    outs << thread->getCpuPtr()->name() << " ";
-
     if (Debug::ExecAsid)
         outs << "A" << dec << TheISA::getExecutingAsid(thread) << " ";
 
@@ -185,6 +175,9 @@ Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
     //  End of line...
     //
     outs << endl;
+
+    Trace::getDebugLogger()->dprintf_flag(
+        when, thread->getCpuPtr()->name(), "ExecEnable", outs.str().c_str());
 }
 
 void
index b7e808a2a66a866240bff2630f5544c3a05e735f..b9ffb41ae0d309b046177de1ced9c7e40093cb31 100644 (file)
@@ -57,7 +57,6 @@ class ExeTracerRecord : public InstRecord
     void traceInst(const StaticInstPtr &inst, bool ran);
 
     void dump();
-    virtual void dumpTicks(std::ostream &outs);
 };
 
 class ExeTracer : public InstTracer