aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/Core
diff options
context:
space:
mode:
authorFrank Busse <bb0xfb@gmail.com>2020-06-23 17:54:40 +0100
committerMartinNowack <2443641+MartinNowack@users.noreply.github.com>2020-06-24 13:48:18 +0100
commitecdddd94fdad39fcb17fe256715cf4cc9bacbfb9 (patch)
tree42ffc346cd2f774d2fc86d2188ace723a3f43a34 /lib/Core
parentaef3ecea2868ea08fafe34632c395df29a99f633 (diff)
downloadklee-ecdddd94fdad39fcb17fe256715cf4cc9bacbfb9.tar.gz
print stateID with --debug-print-instructions
Diffstat (limited to 'lib/Core')
-rw-r--r--lib/Core/Executor.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp
index 03deeda7..af714c2c 100644
--- a/lib/Core/Executor.cpp
+++ b/lib/Core/Executor.cpp
@@ -1292,11 +1292,12 @@ void Executor::executeGetValue(ExecutionState &state,
}
void Executor::printDebugInstructions(ExecutionState &state) {
- // check do not print
+ // print nothing if option unset
if (DebugPrintInstructions.getBits() == 0)
- return;
+ return;
- llvm::raw_ostream *stream = 0;
+ // set output stream (stderr/file)
+ llvm::raw_ostream *stream = nullptr;
if (DebugPrintInstructions.isSet(STDERR_ALL) ||
DebugPrintInstructions.isSet(STDERR_SRC) ||
DebugPrintInstructions.isSet(STDERR_COMPACT))
@@ -1304,18 +1305,24 @@ void Executor::printDebugInstructions(ExecutionState &state) {
else
stream = &debugLogBuffer;
+ // print:
+ // [all] src location:asm line:state ID:instruction
+ // [compact] asm line:state ID
+ // [src] src location:asm line:state ID
if (!DebugPrintInstructions.isSet(STDERR_COMPACT) &&
!DebugPrintInstructions.isSet(FILE_COMPACT)) {
- (*stream) << " " << state.pc->getSourceLocation() << ":";
+ (*stream) << " " << state.pc->getSourceLocation() << ':';
}
- (*stream) << state.pc->info->assemblyLine;
+ (*stream) << state.pc->info->assemblyLine << ':' << state.getID();
if (DebugPrintInstructions.isSet(STDERR_ALL) ||
DebugPrintInstructions.isSet(FILE_ALL))
- (*stream) << ":" << *(state.pc->inst);
- (*stream) << "\n";
+ (*stream) << ':' << *(state.pc->inst);
+
+ (*stream) << '\n';
+ // flush to file
if (DebugPrintInstructions.isSet(FILE_ALL) ||
DebugPrintInstructions.isSet(FILE_COMPACT) ||
DebugPrintInstructions.isSet(FILE_SRC)) {