summaryrefslogtreecommitdiff
path: root/util/statetrace/arch/tracechild_amd64.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-07-29 12:37:35 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-07-29 12:37:35 -0700
commitb4087e0e44bba5c4ddbfdb541d50c6c55abed338 (patch)
treea69a3466b506a405ec899c9e9d6b300db0edf08c /util/statetrace/arch/tracechild_amd64.hh
parentc5c64823fc4eb783b70d57c6c88673dad4548696 (diff)
downloadgem5-b4087e0e44bba5c4ddbfdb541d50c6c55abed338.tar.xz
Statetrace: Make statetrace patch amd64 executables for true single stepping after system calls.
Because of peculiarities in how system calls are returned from, single stepping executes some system calls and the instruction following them in a single step. Statetrace now patches the executable image when it detects a system call to force "correct" behavior, aka the appearance of stepping one instruction every single time. --HG-- extra : convert_revision : ac6243a2e00ff98f827b005efd27b4dc5be4f774
Diffstat (limited to 'util/statetrace/arch/tracechild_amd64.hh')
-rw-r--r--util/statetrace/arch/tracechild_amd64.hh4
1 files changed, 4 insertions, 0 deletions
diff --git a/util/statetrace/arch/tracechild_amd64.hh b/util/statetrace/arch/tracechild_amd64.hh
index 36974e56d..e7457f677 100644
--- a/util/statetrace/arch/tracechild_amd64.hh
+++ b/util/statetrace/arch/tracechild_amd64.hh
@@ -68,6 +68,8 @@ class AMD64TraceChild : public TraceChild
user_regs_struct oldregs;
bool regDiffSinceUpdate[numregs];
+ uint64_t findSyscall();
+
protected:
bool update(int pid);
@@ -101,6 +103,8 @@ class AMD64TraceChild : public TraceChild
std::ostream & outputStartState(std::ostream & output);
char * printReg(int num);
+
+ bool step();
};
#endif