Remove MAX_REGISTER_SIZE from target.c

gdb/
	* regcache.c (regcache_debug_print_register): New function.
	* regcache.h (regcache_debug_print_register): New declaration.
	* target.c (debug_print_register): Remove.
	(target_fetch_registers): Call regcache_debug_print_register.
	(target_store_registers): Likewise.
This commit is contained in:
Alan Hayward 2017-03-24 16:53:05 +00:00
parent 568c1b9f50
commit ed771251e1
4 changed files with 52 additions and 39 deletions

View File

@ -1,3 +1,11 @@
2017-03-24 Alan Hayward <alan.hayward@arm.com>
* regcache.c (regcache_debug_print_register): New function.
* regcache.h (regcache_debug_print_register): New declaration.
* target.c (debug_print_register): Remove.
(target_fetch_registers): Call regcache_debug_print_register.
(target_store_registers): Likewise.
2017-03-24 Pádraig Brady <pbrady@fb.com>
* dwarf2read.c (setup_type_unit_groups): Ensure dir_index doesn't

View File

@ -1258,6 +1258,41 @@ regcache_write_pc (struct regcache *regcache, CORE_ADDR pc)
reinit_frame_cache ();
}
void
regcache_debug_print_register (const char *func, struct regcache *regcache,
int regno)
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
fprintf_unfiltered (gdb_stdlog, "%s ", func);
if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
&& gdbarch_register_name (gdbarch, regno) != NULL
&& gdbarch_register_name (gdbarch, regno)[0] != '\0')
fprintf_unfiltered (gdb_stdlog, "(%s)",
gdbarch_register_name (gdbarch, regno));
else
fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int size = register_size (gdbarch, regno);
gdb_byte *buf = register_buffer (regcache, regno);
fprintf_unfiltered (gdb_stdlog, " = ");
for (int i = 0; i < size; i++)
{
fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
}
if (size <= sizeof (LONGEST))
{
ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
fprintf_unfiltered (gdb_stdlog, " %s %s",
core_addr_to_string_nz (val), plongest (val));
}
}
fprintf_unfiltered (gdb_stdlog, "\n");
}
static void
reg_flush_command (char *command, int from_tty)

View File

@ -236,4 +236,10 @@ extern void regcache_cpy (struct regcache *dest, struct regcache *src);
extern void registers_changed (void);
extern void registers_changed_ptid (ptid_t);
/* Dump the contents of a register from the register cache to the target
debug. */
extern void regcache_debug_print_register (const char *func,
struct regcache *regcache,
int regno);
#endif /* REGCACHE_H */

View File

@ -3547,49 +3547,12 @@ target_options_to_string (int target_options)
return ret;
}
static void
debug_print_register (const char * func,
struct regcache *regcache, int regno)
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
fprintf_unfiltered (gdb_stdlog, "%s ", func);
if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
&& gdbarch_register_name (gdbarch, regno) != NULL
&& gdbarch_register_name (gdbarch, regno)[0] != '\0')
fprintf_unfiltered (gdb_stdlog, "(%s)",
gdbarch_register_name (gdbarch, regno));
else
fprintf_unfiltered (gdb_stdlog, "(%d)", regno);
if (regno >= 0 && regno < gdbarch_num_regs (gdbarch))
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int i, size = register_size (gdbarch, regno);
gdb_byte buf[MAX_REGISTER_SIZE];
regcache_raw_collect (regcache, regno, buf);
fprintf_unfiltered (gdb_stdlog, " = ");
for (i = 0; i < size; i++)
{
fprintf_unfiltered (gdb_stdlog, "%02x", buf[i]);
}
if (size <= sizeof (LONGEST))
{
ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
fprintf_unfiltered (gdb_stdlog, " %s %s",
core_addr_to_string_nz (val), plongest (val));
}
}
fprintf_unfiltered (gdb_stdlog, "\n");
}
void
target_fetch_registers (struct regcache *regcache, int regno)
{
current_target.to_fetch_registers (&current_target, regcache, regno);
if (targetdebug)
debug_print_register ("target_fetch_registers", regcache, regno);
regcache_debug_print_register ("target_fetch_registers", regcache, regno);
}
void
@ -3601,7 +3564,8 @@ target_store_registers (struct regcache *regcache, int regno)
current_target.to_store_registers (&current_target, regcache, regno);
if (targetdebug)
{
debug_print_register ("target_store_registers", regcache, regno);
regcache_debug_print_register ("target_store_registers", regcache,
regno);
}
}