btrace, gdbserver: read branch trace incrementally
authorMarkus Metzger <markus.t.metzger@intel.com>
Mon, 3 Jun 2013 13:39:35 +0000 (15:39 +0200)
committerMarkus Metzger <markus.t.metzger@intel.com>
Thu, 16 Jan 2014 12:11:42 +0000 (13:11 +0100)
commit969c39fbcd6a5675c1f4b97cd23d680e4b5b6487
tree54d7a2c546ecf86fbe37536db86d0916734203d8
parent0b722aec57e2e54083c1d56657762945ad4604fc
btrace, gdbserver: read branch trace incrementally

Read branch trace data incrementally and extend the current trace rather than
discarding it and reading the entire trace buffer each time.

If the branch trace buffer overflowed, we can't extend the current trace so we
discard it and start anew by reading the entire branch trace buffer.

2014-01-16  Markus Metzger  <markus.t.metzger@intel.com>

* common/linux-btrace.c (perf_event_read_bts, linux_read_btrace):
Support delta reads.
(linux_disable_btrace): Change return type.
* common/linux-btrace.h (linux_read_btrace): Change parameters
and return type to allow error reporting.  Update users.
(linux_disable_btrace): Change return type.  Update users.
* common/btrace-common.h (btrace_read_type) <BTRACE_READ_DELTA>:
New.
(btrace_error): New.
(btrace_block) <begin>: Comment on BEGIN == 0.
* btrace.c (btrace_compute_ftrace): Start from the end of
the current trace.
(btrace_stitch_trace, btrace_clear_history): New.
(btrace_fetch): Read delta trace, return if replaying.
(btrace_clear): Move clear history code to btrace_clear_history.
(parse_xml_btrace): Throw an error if parsing failed.
* target.h (struct target_ops) <to_read_btrace>: Change parameters
and return type to allow error reporting.
(target_read_btrace): Change parameters and return type to allow
error reporting.
* target.c (target_read_btrace): Update.
* remote.c (remote_read_btrace): Support delta reads.  Pass
errors on.
* NEWS: Announce it.

gdbserver/
* target.h (target_ops) <read_btrace>: Change parameters and
return type to allow error reporting.
* server.c (handle_qxfer_btrace): Support delta reads.  Pass
trace reading errors on.
* linux-low.c (linux_low_read_btrace): Pass trace reading
errors on.
(linux_low_disable_btrace): New.
16 files changed:
gdb/ChangeLog
gdb/NEWS
gdb/amd64-linux-nat.c
gdb/btrace.c
gdb/common/btrace-common.h
gdb/common/linux-btrace.c
gdb/common/linux-btrace.h
gdb/doc/gdb.texinfo
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c
gdb/gdbserver/server.c
gdb/gdbserver/target.h
gdb/i386-linux-nat.c
gdb/remote.c
gdb/target.c
gdb/target.h