Merge printing code
authorGary Benson <gbenson@redhat.com>
Tue, 17 Jun 2014 10:32:58 +0000 (11:32 +0100)
committerGary Benson <gbenson@redhat.com>
Wed, 18 Jun 2014 09:15:17 +0000 (10:15 +0100)
This commit synchronizes the debug printing code in i386-nat.c and
i386-low.c.

gdb/
2014-06-18  Gary Benson  <gbenson@redhat.com>

* i386-nat.c (debug_printf): New macro.
(i386_get_debug_register_length): Likewise.
(TARGET_HAS_DR_LEN_8): Use above macro.
(i386_show_dr): Use debug_printf instead of puts_unfiltered
and printf_unfiltered.  Use phex to format values.

gdb/gdbserver/
2014-06-18  Gary Benson  <gbenson@redhat.com>

* i386-low.c (i386_get_debug_register_length): New macro.
(TARGET_HAS_DR_LEN_8): Remove conditional.  Use above macro.
(i386_show_dr): Use debug_printf instead of fprintf.  Use
phex to format values.

gdb/ChangeLog
gdb/gdbserver/ChangeLog
gdb/gdbserver/i386-low.c
gdb/i386-nat.c

index c6de90eab80399777853e324efde30116a1de786..2754c618db13b8ba7b2c097f7d9f79bea440e649 100644 (file)
@@ -1,3 +1,11 @@
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+       * i386-nat.c (debug_printf): New macro.
+       (i386_get_debug_register_length): Likewise.
+       (TARGET_HAS_DR_LEN_8): Use above macro.
+       (i386_show_dr): Use debug_printf instead of puts_unfiltered
+       and printf_unfiltered.  Use phex to format values.
+
 2014-06-18  Gary Benson  <gbenson@redhat.com>
 
        * i386-nat.c (i386_handle_nonaligned_watchpoint) <size_try_array>:
index 78cf89b574cf49258364b18322ae5f6cb17aaf70..47a538f0262d84f41167f57dcc017b80718c2967 100644 (file)
@@ -1,3 +1,10 @@
+2014-06-18  Gary Benson  <gbenson@redhat.com>
+
+       * i386-low.c (i386_get_debug_register_length): New macro.
+       (TARGET_HAS_DR_LEN_8): Remove conditional.  Use above macro.
+       (i386_show_dr): Use debug_printf instead of fprintf.  Use
+       phex to format values.
+
 2014-06-18  Gary Benson  <gbenson@redhat.com>
 
        * i386-low.h: Comment changes.
index d122ff7811fdd9f9a9f6fad20660afbe5a6e53b7..b154fcdb0e8364f8a12eb1c15f373bf57a7b62f3 100644 (file)
    The functions below implement debug registers sharing by reference
    counts, and allow to watch regions up to 16 bytes long.  */
 
-/* Support for 8-byte wide hw watchpoints.  */
-#ifndef TARGET_HAS_DR_LEN_8
+/* Debug register size, in bytes.  */
 /* NOTE: sizeof (long) == 4 on win64.  */
-#define TARGET_HAS_DR_LEN_8 (sizeof (void *) == 8)
-#endif
+#define i386_get_debug_register_length() (sizeof (void *))
+
+/* Support for 8-byte wide hw watchpoints.  */
+#define TARGET_HAS_DR_LEN_8 (i386_get_debug_register_length () == 8)
 
 /* DR7 Debug Control register fields.  */
 
@@ -176,29 +177,32 @@ i386_show_dr (struct i386_debug_reg_state *state,
 {
   int i;
 
-  fprintf (stderr, "%s", func);
+  debug_printf ("%s", func);
   if (addr || len)
-    fprintf (stderr, " (addr=%lx, len=%d, type=%s)",
-            (unsigned long) addr, len,
-            type == hw_write ? "data-write"
-            : (type == hw_read ? "data-read"
-               : (type == hw_access ? "data-read/write"
-                  : (type == hw_execute ? "instruction-execute"
-                     /* FIXME: if/when I/O read/write
-                        watchpoints are supported, add them
-                        here.  */
-                     : "??unknown??"))));
-  fprintf (stderr, ":\n");
-  fprintf (stderr, "\tCONTROL (DR7): %08x          STATUS (DR6): %08x\n",
-          state->dr_control_mirror, state->dr_status_mirror);
+    debug_printf (" (addr=%s, len=%d, type=%s)",
+                 phex (addr, 8), len,
+                 type == hw_write ? "data-write"
+                 : (type == hw_read ? "data-read"
+                    : (type == hw_access ? "data-read/write"
+                       : (type == hw_execute ? "instruction-execute"
+                          /* FIXME: if/when I/O read/write
+                             watchpoints are supported, add them
+                             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)
     {
-      fprintf (stderr, "\
+      debug_printf ("\
 \tDR%d: addr=0x%s, ref.count=%d  DR%d: addr=0x%s, ref.count=%d\n",
-             i, paddress (state->dr_mirror[i]),
-             state->dr_ref_count[i],
-             i + 1, paddress (state->dr_mirror[i + 1]),
-             state->dr_ref_count[i + 1]);
+                   i, phex (state->dr_mirror[i],
+                            i386_get_debug_register_length ()),
+                   state->dr_ref_count[i],
+                   i + 1, phex (state->dr_mirror[i + 1],
+                                i386_get_debug_register_length ()),
+                   state->dr_ref_count[i + 1]);
       i++;
     }
 }
index 23efb3346d5c17568c778ab85bdbe72e1b56ca4d..91d868deda599516bf0c5c34a02f4130a32f6a30 100644 (file)
    The functions below implement debug registers sharing by reference
    counts, and allow to watch regions up to 16 bytes long.  */
 
+/* Function used for printing mirrored debug registers.  */
+#define debug_printf(fmt, args...) \
+  fprintf_unfiltered (gdb_stdlog, fmt, ##args);
+
 /* Low-level function vector.  */
 struct i386_dr_low_type i386_dr_low;
 
+/* Debug register size, in bytes.  */
+#define i386_get_debug_register_length() \
+  (i386_dr_low.debug_register_length)
+
 /* Support for 8-byte wide hw watchpoints.  */
-#define TARGET_HAS_DR_LEN_8 (i386_dr_low.debug_register_length == 8)
+#define TARGET_HAS_DR_LEN_8 (i386_get_debug_register_length () == 8)
 
 /* DR7 Debug Control register fields.  */
 
@@ -273,35 +281,34 @@ i386_show_dr (struct i386_debug_reg_state *state,
              const char *func, CORE_ADDR addr,
              int len, enum target_hw_bp_type type)
 {
-  int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
   int i;
 
-  puts_unfiltered (func);
+  debug_printf ("%s", func);
   if (addr || len)
-    printf_unfiltered (" (addr=%lx, len=%d, type=%s)",
-                      /* This code is for ia32, so casting CORE_ADDR
-                         to unsigned long should be okay.  */
-                      (unsigned long) addr, len,
-                      type == hw_write ? "data-write"
-                      : (type == hw_read ? "data-read"
-                         : (type == hw_access ? "data-read/write"
-                            : (type == hw_execute ? "instruction-execute"
-                               /* FIXME: if/when I/O read/write
-                                  watchpoints are supported, add them
-                                  here.  */
-                               : "??unknown??"))));
-  puts_unfiltered (":\n");
-  printf_unfiltered ("\tCONTROL (DR7): %s          STATUS (DR6): %s\n",
-                    phex (state->dr_control_mirror, 8),
-                    phex (state->dr_status_mirror, 8));
+    debug_printf (" (addr=%s, len=%d, type=%s)",
+                 phex (addr, 8), len,
+                 type == hw_write ? "data-write"
+                 : (type == hw_read ? "data-read"
+                    : (type == hw_access ? "data-read/write"
+                       : (type == hw_execute ? "instruction-execute"
+                          /* FIXME: if/when I/O read/write
+                             watchpoints are supported, add them
+                             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)
     {
-      printf_unfiltered ("\
+      debug_printf ("\
 \tDR%d: addr=0x%s, ref.count=%d  DR%d: addr=0x%s, ref.count=%d\n",
-                        i, phex (state->dr_mirror[i], addr_size),
-                        state->dr_ref_count[i],
-                        i + 1, phex (state->dr_mirror[i + 1], addr_size),
-                        state->dr_ref_count[i + 1]);
+                   i, phex (state->dr_mirror[i],
+                            i386_get_debug_register_length ()),
+                   state->dr_ref_count[i],
+                   i + 1, phex (state->dr_mirror[i + 1],
+                                i386_get_debug_register_length ()),
+                   state->dr_ref_count[i + 1]);
       i++;
     }
 }