mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-23 20:19:49 +00:00
Introduce show_debug_regs
This commit adds a new global flag show_debug_regs to common-debug.h to replace the flag debug_hw_points used by gdbserver and by the Linux x86 and AArch64 ports, and to replace the flag maint_show_dr used by the Linux MIPS port. Note that some debug printing in the AArch64 port was enabled only if debug_hw_points > 1 but no way to set debug_hw_points to values other than 0 and 1 was provided; that code was effectively dead. This commit enables all debug printing if show_debug_regs is nonzero, so the AArch64 output will be more verbose than previously. gdb/ChangeLog: * common/common-debug.h (show_debug_regs): Declare. * common/common-debug.c (show_debug_regs): Define. * aarch64-linux-nat.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. Replace all uses that considered debug_hw_points as a multi-value integer with straight boolean uses. * x86-nat.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. * nat/x86-dregs.c (debug_hw_points): Don't declare. Replace all uses with show_debug_regs. * mips-linux-nat.c (maint_show_dr): Don't define. Replace all uses with show_debug_regs. gdb/gdbserver/ChangeLog: * server.h (debug_hw_points): Don't declare. * server.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. * linux-aarch64-low.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs.
This commit is contained in:
parent
3adc1a7d45
commit
c5e92cca56
@ -1,3 +1,18 @@
|
||||
2014-09-11 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* common/common-debug.h (show_debug_regs): Declare.
|
||||
* common/common-debug.c (show_debug_regs): Define.
|
||||
* aarch64-linux-nat.c (debug_hw_points): Don't define. Replace
|
||||
all uses with show_debug_regs. Replace all uses that considered
|
||||
debug_hw_points as a multi-value integer with straight boolean
|
||||
uses.
|
||||
* x86-nat.c (debug_hw_points): Don't define. Replace all uses
|
||||
with show_debug_regs.
|
||||
* nat/x86-dregs.c (debug_hw_points): Don't declare. Replace
|
||||
all uses with show_debug_regs.
|
||||
* mips-linux-nat.c (maint_show_dr): Don't define. Replace all
|
||||
uses with show_debug_regs.
|
||||
|
||||
2014-09-10 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* findvar.c (address_from_register): Handle targets requiring
|
||||
|
@ -119,10 +119,6 @@ get_thread_id (ptid_t ptid)
|
||||
static int aarch64_num_bp_regs;
|
||||
static int aarch64_num_wp_regs;
|
||||
|
||||
/* Debugging of hardware breakpoint/watchpoint support. */
|
||||
|
||||
static int debug_hw_points;
|
||||
|
||||
/* Each bit of a variable of this type is used to indicate whether a
|
||||
hardware breakpoint or watchpoint setting has been changed since
|
||||
the last update.
|
||||
@ -363,7 +359,7 @@ debug_reg_change_callback (struct lwp_info *lwp, void *ptr)
|
||||
if (info == NULL)
|
||||
info = lwp->arch_private = XCNEW (struct arch_lwp_info);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"debug_reg_change_callback: \n\tOn entry:\n");
|
||||
@ -392,7 +388,7 @@ debug_reg_change_callback (struct lwp_info *lwp, void *ptr)
|
||||
if (!lwp->stopped)
|
||||
linux_stop_lwp (lwp);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"\tOn exit:\n\tpid%d, dr_changed_bp=0x%s, "
|
||||
@ -677,7 +673,7 @@ aarch64_linux_prepare_to_resume (struct lwp_info *lwp)
|
||||
struct aarch64_debug_reg_state *state
|
||||
= aarch64_get_debug_reg_state (ptid_get_pid (lwp->ptid));
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered (gdb_stdlog, "prepare_to_resume thread %d\n", tid);
|
||||
|
||||
/* Watchpoints. */
|
||||
@ -1200,7 +1196,7 @@ aarch64_linux_insert_hw_breakpoint (struct target_ops *self,
|
||||
const int len = 4;
|
||||
const int type = hw_execute;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered
|
||||
(gdb_stdlog,
|
||||
"insert_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
|
||||
@ -1208,7 +1204,7 @@ aarch64_linux_insert_hw_breakpoint (struct target_ops *self,
|
||||
|
||||
ret = aarch64_handle_breakpoint (type, addr, len, 1 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
struct aarch64_debug_reg_state *state
|
||||
= aarch64_get_debug_reg_state (ptid_get_pid (inferior_ptid));
|
||||
@ -1233,14 +1229,14 @@ aarch64_linux_remove_hw_breakpoint (struct target_ops *self,
|
||||
const int len = 4;
|
||||
const int type = hw_execute;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered
|
||||
(gdb_stdlog, "remove_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
|
||||
(unsigned long) addr, len);
|
||||
|
||||
ret = aarch64_handle_breakpoint (type, addr, len, 0 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
struct aarch64_debug_reg_state *state
|
||||
= aarch64_get_debug_reg_state (ptid_get_pid (inferior_ptid));
|
||||
@ -1297,7 +1293,7 @@ aarch64_handle_unaligned_watchpoint (int type, CORE_ADDR addr, int len,
|
||||
ret = aarch64_dr_state_remove_one_point (state, type, aligned_addr,
|
||||
aligned_len);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"handle_unaligned_watchpoint: is_insert: %d\n"
|
||||
" aligned_addr: 0x%08lx, aligned_len: %d\n"
|
||||
@ -1335,7 +1331,7 @@ aarch64_linux_insert_watchpoint (struct target_ops *self,
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"insert_watchpoint on entry (addr=0x%08lx, len=%d)\n",
|
||||
(unsigned long) addr, len);
|
||||
@ -1344,7 +1340,7 @@ aarch64_linux_insert_watchpoint (struct target_ops *self,
|
||||
|
||||
ret = aarch64_handle_watchpoint (type, addr, len, 1 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
struct aarch64_debug_reg_state *state
|
||||
= aarch64_get_debug_reg_state (ptid_get_pid (inferior_ptid));
|
||||
@ -1368,7 +1364,7 @@ aarch64_linux_remove_watchpoint (struct target_ops *self,
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf_unfiltered (gdb_stdlog,
|
||||
"remove_watchpoint on entry (addr=0x%08lx, len=%d)\n",
|
||||
(unsigned long) addr, len);
|
||||
@ -1377,7 +1373,7 @@ aarch64_linux_remove_watchpoint (struct target_ops *self,
|
||||
|
||||
ret = aarch64_handle_watchpoint (type, addr, len, 0 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
struct aarch64_debug_reg_state *state
|
||||
= aarch64_get_debug_reg_state (ptid_get_pid (inferior_ptid));
|
||||
@ -1496,7 +1492,7 @@ add_show_debug_regs_command (void)
|
||||
/* A maintenance command to enable printing the internal DRi mirror
|
||||
variables. */
|
||||
add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
|
||||
&debug_hw_points, _("\
|
||||
&show_debug_regs, _("\
|
||||
Set whether to show variables that mirror the AArch64 debug registers."), _("\
|
||||
Show whether to show variables that mirror the AArch64 debug registers."), _("\
|
||||
Use \"on\" to enable, \"off\" to disable.\n\
|
||||
|
@ -26,6 +26,10 @@
|
||||
|
||||
/* See common/common-debug.h. */
|
||||
|
||||
int show_debug_regs;
|
||||
|
||||
/* See common/common-debug.h. */
|
||||
|
||||
void
|
||||
debug_printf (const char *fmt, ...)
|
||||
{
|
||||
|
@ -20,6 +20,11 @@
|
||||
#ifndef COMMON_DEBUG_H
|
||||
#define COMMON_DEBUG_H
|
||||
|
||||
/* Set to nonzero to enable debugging of hardware breakpoint/
|
||||
watchpoint support code. */
|
||||
|
||||
extern int show_debug_regs;
|
||||
|
||||
/* Print a formatted message to the appropriate channel for
|
||||
debugging output for the client. */
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
2014-09-11 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* server.h (debug_hw_points): Don't declare.
|
||||
* server.c (debug_hw_points): Don't define. Replace all uses
|
||||
with show_debug_regs.
|
||||
* linux-aarch64-low.c (debug_hw_points): Don't define. Replace
|
||||
all uses with show_debug_regs.
|
||||
|
||||
2014-09-08 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
|
||||
* linux-ppc-low.c (ppc_collect_ptrace_register): Adjust routine to take
|
||||
|
@ -267,9 +267,6 @@ aarch64_store_fpregset (struct regcache *regcache, const void *buf)
|
||||
supply_register (regcache, AARCH64_V0_REGNO + i, ®set->vregs[i]);
|
||||
}
|
||||
|
||||
/* Debugging of hardware breakpoint/watchpoint support. */
|
||||
extern int debug_hw_points;
|
||||
|
||||
/* Enable miscellaneous debugging output. The name is historical - it
|
||||
was originally used to debug LinuxThreads support. */
|
||||
extern int debug_threads;
|
||||
@ -626,7 +623,7 @@ debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
|
||||
dr_changed_t *dr_changed_ptr;
|
||||
dr_changed_t dr_changed;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
fprintf (stderr, "debug_reg_change_callback: \n\tOn entry:\n");
|
||||
fprintf (stderr, "\tpid%d, tid: %ld, dr_changed_bp=0x%llx, "
|
||||
@ -677,7 +674,7 @@ debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
|
||||
linux_stop_lwp (lwp);
|
||||
}
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
{
|
||||
fprintf (stderr, "\tOn exit:\n\tpid%d, tid: %ld, dr_changed_bp=0x%llx, "
|
||||
"dr_changed_wp=0x%llx\n",
|
||||
@ -917,7 +914,7 @@ aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
|
||||
ret = aarch64_dr_state_remove_one_point (state, type, aligned_addr,
|
||||
aligned_len);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf (stderr,
|
||||
"handle_unaligned_watchpoint: is_insert: %d\n"
|
||||
" aligned_addr: 0x%s, aligned_len: %d\n"
|
||||
@ -973,7 +970,7 @@ aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
|
||||
int ret;
|
||||
enum target_hw_bp_type targ_type;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf (stderr, "insert_point on entry (addr=0x%08lx, len=%d)\n",
|
||||
(unsigned long) addr, len);
|
||||
|
||||
@ -987,7 +984,7 @@ aarch64_insert_point (enum raw_bkpt_type type, CORE_ADDR addr,
|
||||
ret =
|
||||
aarch64_handle_breakpoint (targ_type, addr, len, 1 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs > 1)
|
||||
aarch64_show_debug_reg_state (aarch64_get_debug_reg_state (),
|
||||
"insert_point", addr, len, targ_type);
|
||||
|
||||
@ -1009,7 +1006,7 @@ aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
|
||||
int ret;
|
||||
enum target_hw_bp_type targ_type;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf (stderr, "remove_point on entry (addr=0x%08lx, len=%d)\n",
|
||||
(unsigned long) addr, len);
|
||||
|
||||
@ -1024,7 +1021,7 @@ aarch64_remove_point (enum raw_bkpt_type type, CORE_ADDR addr,
|
||||
ret =
|
||||
aarch64_handle_breakpoint (targ_type, addr, len, 0 /* is_insert */);
|
||||
|
||||
if (debug_hw_points > 1)
|
||||
if (show_debug_regs > 1)
|
||||
aarch64_show_debug_reg_state (aarch64_get_debug_reg_state (),
|
||||
"remove_point", addr, len, targ_type);
|
||||
|
||||
@ -1150,7 +1147,7 @@ aarch64_linux_prepare_to_resume (struct lwp_info *lwp)
|
||||
struct aarch64_debug_reg_state *state
|
||||
= &proc->private->arch_private->debug_reg_state;
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
fprintf (stderr, "prepare_to_resume thread %ld\n", lwpid_of (thread));
|
||||
|
||||
/* Watchpoints. */
|
||||
|
@ -69,9 +69,6 @@ int disable_randomization = 1;
|
||||
|
||||
static char **program_argv, **wrapper_argv;
|
||||
|
||||
/* Enable debugging of h/w breakpoint/watchpoint support. */
|
||||
int debug_hw_points;
|
||||
|
||||
int pass_signals[GDB_SIGNAL_LAST];
|
||||
int program_signals[GDB_SIGNAL_LAST];
|
||||
int program_signals_p;
|
||||
@ -1012,12 +1009,12 @@ handle_monitor_command (char *mon, char *own_buf)
|
||||
}
|
||||
else if (strcmp (mon, "set debug-hw-points 1") == 0)
|
||||
{
|
||||
debug_hw_points = 1;
|
||||
show_debug_regs = 1;
|
||||
monitor_output ("H/W point debugging output enabled.\n");
|
||||
}
|
||||
else if (strcmp (mon, "set debug-hw-points 0") == 0)
|
||||
{
|
||||
debug_hw_points = 0;
|
||||
show_debug_regs = 0;
|
||||
monitor_output ("H/W point debugging output disabled.\n");
|
||||
}
|
||||
else if (strcmp (mon, "set remote-debug 1") == 0)
|
||||
|
@ -82,7 +82,6 @@ extern ptid_t cont_thread;
|
||||
extern ptid_t general_thread;
|
||||
|
||||
extern int server_waiting;
|
||||
extern int debug_hw_points;
|
||||
extern int pass_signals[];
|
||||
extern int program_signals[];
|
||||
extern int program_signals_p;
|
||||
|
@ -50,10 +50,6 @@
|
||||
we'll clear this and use PTRACE_PEEKUSER instead. */
|
||||
static int have_ptrace_regsets = 1;
|
||||
|
||||
/* Whether or not to print the mirrored debug registers. */
|
||||
|
||||
static int maint_show_dr;
|
||||
|
||||
/* Saved function pointers to fetch and store a single register using
|
||||
PTRACE_PEEKUSER and PTRACE_POKEUSER. */
|
||||
|
||||
@ -690,7 +686,7 @@ mips_linux_insert_watchpoint (struct target_ops *self,
|
||||
watch_mirror = regs;
|
||||
retval = write_watchpoint_regs ();
|
||||
|
||||
if (maint_show_dr)
|
||||
if (show_debug_regs)
|
||||
mips_show_dr ("insert_watchpoint", addr, len, type);
|
||||
|
||||
return retval;
|
||||
@ -738,7 +734,7 @@ mips_linux_remove_watchpoint (struct target_ops *self,
|
||||
|
||||
retval = write_watchpoint_regs ();
|
||||
|
||||
if (maint_show_dr)
|
||||
if (show_debug_regs)
|
||||
mips_show_dr ("remove_watchpoint", addr, len, type);
|
||||
|
||||
return retval;
|
||||
@ -775,7 +771,7 @@ _initialize_mips_linux_nat (void)
|
||||
struct target_ops *t;
|
||||
|
||||
add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
|
||||
&maint_show_dr, _("\
|
||||
&show_debug_regs, _("\
|
||||
Set whether to show variables that mirror the mips debug registers."), _("\
|
||||
Show whether to show variables that mirror the mips debug registers."), _("\
|
||||
Use \"on\" to enable, \"off\" to disable.\n\
|
||||
|
@ -175,11 +175,6 @@
|
||||
/* Types of operations supported by x86_handle_nonaligned_watchpoint. */
|
||||
typedef enum { WP_INSERT, WP_REMOVE, WP_COUNT } x86_wp_op_t;
|
||||
|
||||
#ifndef GDBSERVER
|
||||
/* Whether or not to print the mirrored debug registers. */
|
||||
extern int debug_hw_points;
|
||||
#endif
|
||||
|
||||
/* Print the values of the mirrored debug registers. */
|
||||
|
||||
static void
|
||||
@ -511,7 +506,7 @@ x86_dr_insert_watchpoint (struct x86_debug_reg_state *state,
|
||||
if (retval == 0)
|
||||
x86_update_inferior_debug_regs (state, &local_state);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
x86_show_dr (state, "insert_watchpoint", addr, len, type);
|
||||
|
||||
return retval;
|
||||
@ -550,7 +545,7 @@ x86_dr_remove_watchpoint (struct x86_debug_reg_state *state,
|
||||
if (retval == 0)
|
||||
x86_update_inferior_debug_regs (state, &local_state);
|
||||
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
x86_show_dr (state, "remove_watchpoint", addr, len, type);
|
||||
|
||||
return retval;
|
||||
@ -640,12 +635,12 @@ x86_dr_stopped_data_address (struct x86_debug_reg_state *state,
|
||||
{
|
||||
addr = x86_dr_low_get_addr (i);
|
||||
rc = 1;
|
||||
if (debug_hw_points)
|
||||
if (show_debug_regs)
|
||||
x86_show_dr (state, "watchpoint_hit", addr, -1, hw_write);
|
||||
}
|
||||
}
|
||||
|
||||
if (debug_hw_points && addr == 0)
|
||||
if (show_debug_regs && addr == 0)
|
||||
x86_show_dr (state, "stopped_data_addr", 0, 0, hw_write);
|
||||
|
||||
if (rc)
|
||||
|
@ -33,9 +33,6 @@
|
||||
The functions below implement debug registers sharing by reference
|
||||
counts, and allow to watch regions up to 16 bytes long. */
|
||||
|
||||
/* Whether or not to print the mirrored debug registers. */
|
||||
int debug_hw_points;
|
||||
|
||||
/* Low-level function vector. */
|
||||
struct x86_dr_low_type x86_dr_low;
|
||||
|
||||
@ -272,7 +269,7 @@ add_show_debug_regs_command (void)
|
||||
/* A maintenance command to enable printing the internal DRi mirror
|
||||
variables. */
|
||||
add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
|
||||
&debug_hw_points, _("\
|
||||
&show_debug_regs, _("\
|
||||
Set whether to show variables that mirror the x86 debug registers."), _("\
|
||||
Show whether to show variables that mirror the x86 debug registers."), _("\
|
||||
Use \"on\" to enable, \"off\" to disable.\n\
|
||||
|
Loading…
Reference in New Issue
Block a user