From 1b6d4134c776d54513114199f1478f83894f490b Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Tue, 17 Jun 2014 11:32:58 +0100 Subject: [PATCH] Merge printing code This commit synchronizes the debug printing code in i386-nat.c and i386-low.c. gdb/ 2014-06-18 Gary Benson * 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 * 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 | 8 ++++++ gdb/gdbserver/ChangeLog | 7 +++++ gdb/gdbserver/i386-low.c | 50 +++++++++++++++++++----------------- gdb/i386-nat.c | 55 ++++++++++++++++++++++------------------ 4 files changed, 73 insertions(+), 47 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c6de90eab80..2754c618db1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2014-06-18 Gary Benson + + * 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 * i386-nat.c (i386_handle_nonaligned_watchpoint) : diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 78cf89b574c..47a538f0262 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,10 @@ +2014-06-18 Gary Benson + + * 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 * i386-low.h: Comment changes. diff --git a/gdb/gdbserver/i386-low.c b/gdb/gdbserver/i386-low.c index d122ff7811f..b154fcdb0e8 100644 --- a/gdb/gdbserver/i386-low.c +++ b/gdb/gdbserver/i386-low.c @@ -32,11 +32,12 @@ 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++; } } diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c index 23efb3346d5..91d868deda5 100644 --- a/gdb/i386-nat.c +++ b/gdb/i386-nat.c @@ -37,11 +37,19 @@ 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++; } } -- 2.30.2