cpu: Fix ExeTraceRecord::traceInst.
authorGabe Black <gabeblack@google.com>
Thu, 23 Jan 2020 04:29:36 +0000 (20:29 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 23 Jan 2020 23:45:15 +0000 (23:45 +0000)
A recent-ish change modified ExeTraceRecord::traceInst to make it more
consistent with DPRINTF-s by using dprintf_flag to print the trace
string. The generated string was passed as the format however, and that
means that all % characters in the output (from register names, for
example) are interpreted as format characters, mangling the output and
making cprintf angry since there are no corresponding arguments.

This change sets the format to "%s" instead, and passes the trace
string as the first argument. The argument won't be parsed for format
specifiers, and so should no longer get mangled.

Change-Id: I8fa9c2c22179a5b55104a618a4af4080a3931c5f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24643
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/cpu/exetrace.cc

index aeb17078c7f141873029beb88fccf122eb0bc689..2af59eb2e5e2231be27f19f5fc92af1bd0702676 100644 (file)
@@ -177,7 +177,8 @@ Trace::ExeTracerRecord::traceInst(const StaticInstPtr &inst, bool ran)
     outs << endl;
 
     Trace::getDebugLogger()->dprintf_flag(
-        when, thread->getCpuPtr()->name(), "ExecEnable", outs.str().c_str());
+        when, thread->getCpuPtr()->name(), "ExecEnable", "%s",
+        outs.str().c_str());
 }
 
 void