mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 14:59:31 +08:00
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.
This commit is contained in:
15
gdb/target.h
15
gdb/target.h
@ -839,9 +839,13 @@ struct target_ops
|
||||
be attempting to talk to a remote target. */
|
||||
void (*to_teardown_btrace) (struct btrace_target_info *tinfo);
|
||||
|
||||
/* Read branch trace data. */
|
||||
VEC (btrace_block_s) *(*to_read_btrace) (struct btrace_target_info *,
|
||||
enum btrace_read_type);
|
||||
/* Read branch trace data for the thread indicated by BTINFO into DATA.
|
||||
DATA is cleared before new trace is added.
|
||||
The branch trace will start with the most recent block and continue
|
||||
towards older blocks. */
|
||||
enum btrace_error (*to_read_btrace) (VEC (btrace_block_s) **data,
|
||||
struct btrace_target_info *btinfo,
|
||||
enum btrace_read_type type);
|
||||
|
||||
/* Stop trace recording. */
|
||||
void (*to_stop_recording) (void);
|
||||
@ -1998,8 +2002,9 @@ extern void target_disable_btrace (struct btrace_target_info *btinfo);
|
||||
extern void target_teardown_btrace (struct btrace_target_info *btinfo);
|
||||
|
||||
/* See to_read_btrace in struct target_ops. */
|
||||
extern VEC (btrace_block_s) *target_read_btrace (struct btrace_target_info *,
|
||||
enum btrace_read_type);
|
||||
extern enum btrace_error target_read_btrace (VEC (btrace_block_s) **,
|
||||
struct btrace_target_info *,
|
||||
enum btrace_read_type);
|
||||
|
||||
/* See to_stop_recording in struct target_ops. */
|
||||
extern void target_stop_recording (void);
|
||||
|
Reference in New Issue
Block a user