diff options
author | Markus Metzger <markus.t.metzger@intel.com> | 2014-03-19 13:49:58 +0100 |
---|---|---|
committer | Markus Metzger <markus.t.metzger@intel.com> | 2015-08-07 10:22:39 +0200 |
commit | da8c46d2967b6325dcd2cc72eca26d807964c93c (patch) | |
tree | cb49a304435ae9f3ce94f7214b3c8aa2e95ee38d /gdb/btrace.h | |
parent | 5599c404621b2d8ac021c1427aee6e8974572042 (diff) | |
download | gdb-da8c46d2967b6325dcd2cc72eca26d807964c93c.zip gdb-da8c46d2967b6325dcd2cc72eca26d807964c93c.tar.gz gdb-da8c46d2967b6325dcd2cc72eca26d807964c93c.tar.bz2 |
btrace: indicate speculative execution
Indicate speculatively executed instructions with a leading '?'. We use the
space that is normally used for the PC prefix. In the case where the
instruction at the current PC had been executed speculatively before, the PC
prefix will be partially overwritten resulting in "?> ".
As a side-effect, the /p modifier to omit the PC prefix in the "record
instruction-history" command now uses a 3-space PC prefix " " in order to
have enough space for the speculative execution indication.
gdb/
* btrace.c (btrace_compute_ftrace_bts): Clear insn flags.
(pt_btrace_insn_flags): New.
(ftrace_add_pt): Call pt_btrace_insn_flags.
* btrace.h (btrace_insn_flag): New.
(btrace_insn) <flags>: New.
* record-btrace.c (btrace_insn_history): Print insn prefix.
* NEWS: Announce it.
doc/
* gdb.texinfo (Process Record and Replay): Document prefixing of
speculatively executed instructions in the "record instruction-history"
command.
testsuite/
* gdb.btrace/instruction_history.exp: Update.
* gdb.btrace/tsx.exp: New.
* gdb.btrace/tsx.c: New.
* lib/gdb.exp (skip_tsx_tests, skip_btrace_pt_tests): New.
Diffstat (limited to 'gdb/btrace.h')
-rw-r--r-- | gdb/btrace.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gdb/btrace.h b/gdb/btrace.h index 93c84ff..756a778 100644 --- a/gdb/btrace.h +++ b/gdb/btrace.h @@ -52,6 +52,13 @@ enum btrace_insn_class BTRACE_INSN_JUMP }; +/* Instruction flags. */ +enum btrace_insn_flag +{ + /* The instruction has been executed speculatively. */ + BTRACE_INSN_FLAG_SPECULATIVE = (1 << 0) +}; + /* A branch trace instruction. This represents a single instruction in a branch trace. */ @@ -65,6 +72,9 @@ struct btrace_insn /* The instruction class of this instruction. */ enum btrace_insn_class iclass; + + /* A bit vector of BTRACE_INSN_FLAGS. */ + enum btrace_insn_flag flags; }; /* A vector of branch trace instructions. */ |