btrace: set/show record btrace cpu
authorMarkus Metzger <markus.t.metzger@intel.com>
Fri, 2 Feb 2018 11:29:48 +0000 (12:29 +0100)
committerMarkus Metzger <markus.t.metzger@intel.com>
Fri, 13 Apr 2018 09:35:55 +0000 (11:35 +0200)
commit4a4495d62d185bdae17ed6aae6ea8249ad07c799
tree94046fea4522f3ca526e3ed6d21cb79b0f7cc95f
parent69f90c75b369cd2d66988a67bbc2a000dd6b9816
btrace: set/show record btrace cpu

Add new set/show commands to set the processor that is used for enabling
errata workarounds when decoding branch trace.

The general format is "<vendor>:<identifier>" but we also allow two
special values "auto" and "none".

The default is "auto", which is the current behaviour of having GDB
determine the processor on which the trace was recorded.

If that cpu is not known to the trace decoder, e.g. when using an old
decoder on a new system, decode may fail with "unknown cpu".  In most
cases it should suffice to 'downgrade' decode to assume an older cpu.
Unfortunately, we can't do this automatically.

The other special value, "none", disables errata workarounds.

gdb/
* NEWS (New options): announce set/show record btrace cpu.
* btrace.c: Include record-btrace.h.
(btrace_compute_ftrace_pt): Skip enabling errata workarounds if
the vendor is unknown.
(btrace_compute_ftrace_1): Add cpu parameter.  Update callers.
Maybe overwrite the btrace configuration's cpu.
(btrace_compute_ftrace): Add cpu parameter.  Update callers.
(btrace_fetch): Add cpu parameter.  Update callers.
(btrace_maint_update_pt_packets): Call record_btrace_get_cpu.
Maybe overwrite the btrace configuration's cpu.  Skip enabling
errata workarounds if the vendor is unknown.
* python/py-record-btrace.c: Include record-btrace.h.
(recpy_bt_begin, recpy_bt_end, recpy_bt_instruction_history)
(recpy_bt_function_call_history): Call record_btrace_get_cpu.
* record-btrace.c (record_btrace_cpu_state_kind): New.
(record_btrace_cpu): New.
(set_record_btrace_cpu_cmdlist): New.
(record_btrace_get_cpu): New.
(require_btrace_thread, record_btrace_info)
(record_btrace_resume_thread): Call record_btrace_get_cpu.
(cmd_set_record_btrace_cpu_none): New.
(cmd_set_record_btrace_cpu_auto): New.
(cmd_set_record_btrace_cpu): New.
(cmd_show_record_btrace_cpu): New.
(_initialize_record_btrace): Initialize set/show record btrace cpu
commands.
* record-btrace.h (record_btrace_get_cpu): New.

testsuite/
* gdb.btrace/cpu.exp: New.

doc/
* gdb.texinfo: Document set/show record btrace cpu.
gdb/ChangeLog
gdb/NEWS
gdb/btrace.c
gdb/btrace.h
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/python/py-record-btrace.c
gdb/record-btrace.c
gdb/record-btrace.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.btrace/cpu.exp [new file with mode: 0644]