Merge printing code

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.
This commit is contained in:
Gary Benson 2014-06-17 11:32:58 +01:00
parent 9b4550ef5e
commit 1b6d4134c7
4 changed files with 73 additions and 47 deletions

View 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>:

View 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.

View File

@ -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++;
}
}

View File

@ -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++;
}
}