From patchwork Wed Aug 13 09:56:19 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Benson X-Patchwork-Id: 2382 Received: (qmail 553 invoked by alias); 13 Aug 2014 10:34:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 542 invoked by uid 89); 13 Aug 2014 10:34:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 13 Aug 2014 10:34:34 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s7D9uSLf017865 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 13 Aug 2014 05:56:28 -0400 Received: from blade.nx (ovpn-116-116.ams2.redhat.com [10.36.116.116]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s7D9uQl2028446; Wed, 13 Aug 2014 05:56:27 -0400 Received: from blade.nx (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id 1864B2640EC; Wed, 13 Aug 2014 10:56:25 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Cc: Doug Evans , Pedro Alves Subject: [PATCH 5/5 v7] Introduce show_debug_regs Date: Wed, 13 Aug 2014 10:56:19 +0100 Message-Id: <1407923779-22149-6-git-send-email-gbenson@redhat.com> In-Reply-To: <1407923779-22149-1-git-send-email-gbenson@redhat.com> References: <1407923779-22149-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes 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. gdb/ 2014-08-13 Gary Benson * 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. * i386-nat.c (debug_hw_points): Don't define. Replace all uses with show_debug_regs. * nat/i386-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/ 2014-08-13 Gary Benson * 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. --- gdb/ChangeLog | 15 +++++++++++++++ gdb/aarch64-linux-nat.c | 30 +++++++++++++----------------- gdb/common/common-debug.c | 4 ++++ gdb/common/common-debug.h | 5 +++++ gdb/gdbserver/ChangeLog | 8 ++++++++ gdb/gdbserver/linux-aarch64-low.c | 19 ++++++++----------- gdb/gdbserver/server.c | 7 ++----- gdb/gdbserver/server.h | 1 - gdb/i386-nat.c | 5 +---- gdb/mips-linux-nat.c | 10 +++------- gdb/nat/i386-dregs.c | 13 ++++--------- 11 files changed, 63 insertions(+), 54 deletions(-) diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c index 4ae789b..ded938c 100644 --- a/gdb/aarch64-linux-nat.c +++ b/gdb/aarch64-linux-nat.c @@ -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\ diff --git a/gdb/common/common-debug.c b/gdb/common/common-debug.c index 660fc70..5cac3bf 100644 --- a/gdb/common/common-debug.c +++ b/gdb/common/common-debug.c @@ -26,6 +26,10 @@ /* See common/common-debug.h. */ +int show_debug_regs; + +/* See common/common-debug.h. */ + void debug_printf (const char *fmt, ...) { diff --git a/gdb/common/common-debug.h b/gdb/common/common-debug.h index c2bb192..348b0e3 100644 --- a/gdb/common/common-debug.h +++ b/gdb/common/common-debug.h @@ -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. */ diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c index 6066e15..ca096b0 100644 --- a/gdb/gdbserver/linux-aarch64-low.c +++ b/gdb/gdbserver/linux-aarch64-low.c @@ -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. */ diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index cf1dffe..500260c 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -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; @@ -1014,12 +1011,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) diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index e6b2277..97498a6 100644 --- a/gdb/gdbserver/server.h +++ b/gdb/gdbserver/server.h @@ -84,7 +84,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; diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c index 499fffb..4a64759 100644 --- a/gdb/i386-nat.c +++ b/gdb/i386-nat.c @@ -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 i386_dr_low_type i386_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\ diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c index 88faa1e..daf2307 100644 --- a/gdb/mips-linux-nat.c +++ b/gdb/mips-linux-nat.c @@ -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. */ @@ -689,7 +685,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; @@ -737,7 +733,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; @@ -774,7 +770,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\ diff --git a/gdb/nat/i386-dregs.c b/gdb/nat/i386-dregs.c index e3272cd..7afe09b 100644 --- a/gdb/nat/i386-dregs.c +++ b/gdb/nat/i386-dregs.c @@ -175,11 +175,6 @@ /* Types of operations supported by i386_handle_nonaligned_watchpoint. */ typedef enum { WP_INSERT, WP_REMOVE, WP_COUNT } i386_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 @@ i386_dr_insert_watchpoint (struct i386_debug_reg_state *state, if (retval == 0) i386_update_inferior_debug_regs (state, &local_state); - if (debug_hw_points) + if (show_debug_regs) i386_show_dr (state, "insert_watchpoint", addr, len, type); return retval; @@ -550,7 +545,7 @@ i386_dr_remove_watchpoint (struct i386_debug_reg_state *state, if (retval == 0) i386_update_inferior_debug_regs (state, &local_state); - if (debug_hw_points) + if (show_debug_regs) i386_show_dr (state, "remove_watchpoint", addr, len, type); return retval; @@ -640,12 +635,12 @@ i386_dr_stopped_data_address (struct i386_debug_reg_state *state, { addr = i386_dr_low_get_addr (i); rc = 1; - if (debug_hw_points) + if (show_debug_regs) i386_show_dr (state, "watchpoint_hit", addr, -1, hw_write); } } - if (debug_hw_points && addr == 0) + if (show_debug_regs && addr == 0) i386_show_dr (state, "stopped_data_addr", 0, 0, hw_write); if (rc)