Add branch trace information to struct thread_info.
Add functions to enable, disable, clear, and fetch a thread's branch trace. gdb/ * target.h: Include btrace.h. (struct target_ops) <to_supports_btrace, to_enable_btrace, to_disable_btrace, to_teardown_btrace, to_read_btrace>: New. * target.c (target_supports_btrace): New function. (target_enable_btrace): New function. (target_disable_btrace): New function. (target_teardown_btrace): New function. (target_read_btrace): New function. * btrace.h: New file. * btrace.c: New file. * Makefile.in: Add btrace.c. * gdbthread.h: Include btrace.h. (struct thread_info): Add btrace field. * thread.c: Include btrace.h. (clear_thread_inferior_resources): Call target_teardown_btrace. * common/btrace-common.h: New file.
This commit is contained in:
parent
7bc0ae020f
commit
02d2762576
9 changed files with 801 additions and 3 deletions
73
gdb/target.c
73
gdb/target.c
|
@ -4153,6 +4153,79 @@ target_ranged_break_num_registers (void)
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
|
||||
int
|
||||
target_supports_btrace (void)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = current_target.beneath; t != NULL; t = t->beneath)
|
||||
if (t->to_supports_btrace != NULL)
|
||||
return t->to_supports_btrace ();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
|
||||
struct btrace_target_info *
|
||||
target_enable_btrace (ptid_t ptid)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = current_target.beneath; t != NULL; t = t->beneath)
|
||||
if (t->to_enable_btrace != NULL)
|
||||
return t->to_enable_btrace (ptid);
|
||||
|
||||
tcomplain ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
|
||||
void
|
||||
target_disable_btrace (struct btrace_target_info *btinfo)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = current_target.beneath; t != NULL; t = t->beneath)
|
||||
if (t->to_disable_btrace != NULL)
|
||||
return t->to_disable_btrace (btinfo);
|
||||
|
||||
tcomplain ();
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
|
||||
void
|
||||
target_teardown_btrace (struct btrace_target_info *btinfo)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = current_target.beneath; t != NULL; t = t->beneath)
|
||||
if (t->to_teardown_btrace != NULL)
|
||||
return t->to_teardown_btrace (btinfo);
|
||||
|
||||
tcomplain ();
|
||||
}
|
||||
|
||||
/* See target.h. */
|
||||
|
||||
VEC (btrace_block_s) *
|
||||
target_read_btrace (struct btrace_target_info *btinfo,
|
||||
enum btrace_read_type type)
|
||||
{
|
||||
struct target_ops *t;
|
||||
|
||||
for (t = current_target.beneath; t != NULL; t = t->beneath)
|
||||
if (t->to_read_btrace != NULL)
|
||||
return t->to_read_btrace (btinfo, type);
|
||||
|
||||
tcomplain ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
debug_to_prepare_to_store (struct regcache *regcache)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue