x86-dregs: Print debug registers one per line
[deliverable/binutils-gdb.git] / gdb / nat / x86-dregs.c
index 5381c77c7868fbb91a130481e9eae6056d9df475..478aa913e972e55db74c3cf7fac7d0c5d9d86a08 100644 (file)
@@ -1,6 +1,6 @@
 /* Debug register code for x86 (i386 and x86-64).
 
-   Copyright (C) 2001-2014 Free Software Foundation, Inc.
+   Copyright (C) 2001-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#ifdef GDBSERVER
-#include "server.h"
-#else
-#include "defs.h"
-#include "inferior.h"
-#endif
+#include "common-defs.h"
 #include "x86-dregs.h"
+#include "break-common.h"
 
 /* Support for hardware watchpoints and breakpoints using the x86
    debug registers.
 /* 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
@@ -202,20 +193,16 @@ x86_show_dr (struct x86_debug_reg_state *state,
                              here.  */
                           : "??unknown??"))));
   debug_printf (":\n");
-  debug_printf ("\tCONTROL (DR7): %s          STATUS (DR6): %s\n",
-               phex (state->dr_control_mirror, 8),
-               phex (state->dr_status_mirror, 8));
-  ALL_DEBUG_REGISTERS (i)
+
+  debug_printf ("\tCONTROL (DR7): 0x%s\n", phex (state->dr_control_mirror, 8));
+  debug_printf ("\tSTATUS (DR6): 0x%s\n", phex (state->dr_status_mirror, 8));
+
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
-      debug_printf ("\
-\tDR%d: addr=0x%s, ref.count=%d  DR%d: addr=0x%s, ref.count=%d\n",
+      debug_printf ("\tDR%d: addr=0x%s, ref.count=%d\n",
                    i, phex (state->dr_mirror[i],
                             x86_get_debug_register_length ()),
-                   state->dr_ref_count[i],
-                   i + 1, phex (state->dr_mirror[i + 1],
-                                x86_get_debug_register_length ()),
-                   state->dr_ref_count[i + 1]);
-      i++;
+                   state->dr_ref_count[i]);
     }
 }
 
@@ -291,7 +278,7 @@ x86_insert_aligned_watchpoint (struct x86_debug_reg_state *state,
   /* First, look for an occupied debug register with the same address
      and the same RW and LEN definitions.  If we find one, we can
      reuse it for this watchpoint as well (and save a register).  */
-  ALL_DEBUG_REGISTERS (i)
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
       if (!X86_DR_VACANT (state, i)
          && state->dr_mirror[i] == addr
@@ -303,7 +290,7 @@ x86_insert_aligned_watchpoint (struct x86_debug_reg_state *state,
     }
 
   /* Next, look for a vacant debug register.  */
-  ALL_DEBUG_REGISTERS (i)
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
       if (X86_DR_VACANT (state, i))
        break;
@@ -346,7 +333,7 @@ x86_remove_aligned_watchpoint (struct x86_debug_reg_state *state,
   int i, retval = -1;
   int all_vacant = 1;
 
-  ALL_DEBUG_REGISTERS (i)
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
       if (!X86_DR_VACANT (state, i)
          && state->dr_mirror[i] == addr
@@ -416,8 +403,8 @@ x86_handle_nonaligned_watchpoint (struct x86_debug_reg_state *state,
       int align = addr % max_wp_len;
       /* Four (eight on AMD64) is the maximum length a debug register
         can watch.  */
-      int try = (len > max_wp_len ? (max_wp_len - 1) : len - 1);
-      int size = size_try_array[try][align];
+      int attempt = (len > max_wp_len ? (max_wp_len - 1) : len - 1);
+      int size = size_try_array[attempt][align];
 
       if (what == WP_COUNT)
        {
@@ -461,7 +448,7 @@ x86_update_inferior_debug_regs (struct x86_debug_reg_state *state,
 {
   int i;
 
-  ALL_DEBUG_REGISTERS (i)
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
       if (X86_DR_VACANT (new_state, i) != X86_DR_VACANT (state, i))
        x86_dr_low_set_addr (new_state, i);
@@ -511,7 +498,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 +537,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;
@@ -620,7 +607,7 @@ x86_dr_stopped_data_address (struct x86_debug_reg_state *state,
      registers.  */
   status = x86_dr_low_get_status ();
 
-  ALL_DEBUG_REGISTERS (i)
+  ALL_DEBUG_ADDRESS_REGISTERS (i)
     {
       if (!X86_DR_WATCH_HIT (status, i))
        continue;
@@ -640,12 +627,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)
This page took 0.026833 seconds and 4 git commands to generate.