PR exp/1926
* infcmd.c (registers_info): Check for a user register before calling target's gdbarch_print_registers_info(). If found to be so, extract the implicit value of user register and call print_scalar_formatted(). * Makefile.in: (infcmd.o): Add $(user_regs_h).
This commit is contained in:
parent
24a836bd61
commit
ad84214454
@ -1,3 +1,13 @@
|
||||
2007-10-25 David Ung <davidu@mips.com>
|
||||
Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
PR exp/1926
|
||||
* infcmd.c (registers_info): Check for a user register before
|
||||
calling target's gdbarch_print_registers_info(). If found to be
|
||||
so, extract the implicit value of user register and call
|
||||
print_scalar_formatted().
|
||||
* Makefile.in: (infcmd.o): Add $(user_regs_h).
|
||||
|
||||
2007-10-25 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* NEWS: Document status of hppa64-hpux support.
|
||||
|
@ -2208,7 +2208,8 @@ infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
|
||||
$(symfile_h) $(gdbcore_h) $(target_h) $(language_h) $(symfile_h) \
|
||||
$(objfiles_h) $(completer_h) $(ui_out_h) $(event_top_h) \
|
||||
$(parser_defs_h) $(regcache_h) $(reggroups_h) $(block_h) \
|
||||
$(solib_h) $(gdb_assert_h) $(observer_h) $(target_descriptions_h)
|
||||
$(solib_h) $(gdb_assert_h) $(observer_h) $(target_descriptions_h) \
|
||||
$(user_regs_h)
|
||||
inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
|
||||
$(event_top_h) $(inf_loop_h) $(remote_h) $(exceptions_h)
|
||||
inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
|
||||
|
27
gdb/infcmd.c
27
gdb/infcmd.c
@ -47,6 +47,7 @@
|
||||
#include "gdb_assert.h"
|
||||
#include "observer.h"
|
||||
#include "target-descriptions.h"
|
||||
#include "user-regs.h"
|
||||
|
||||
/* Functions exported for general use, in inferior.h: */
|
||||
|
||||
@ -1705,21 +1706,35 @@ registers_info (char *addr_exp, int fpregs)
|
||||
while ((*addr_exp) != '\0' && !isspace ((*addr_exp)))
|
||||
addr_exp++;
|
||||
end = addr_exp;
|
||||
|
||||
|
||||
/* Figure out what we've found and display it. */
|
||||
|
||||
/* A register name? */
|
||||
{
|
||||
int regnum = frame_map_name_to_regnum (frame,
|
||||
start, end - start);
|
||||
int regnum = frame_map_name_to_regnum (frame, start, end - start);
|
||||
if (regnum >= 0)
|
||||
{
|
||||
gdbarch_print_registers_info (gdbarch, gdb_stdout,
|
||||
frame, regnum, fpregs);
|
||||
/* User registers lie completely outside of the range of
|
||||
normal registers. Catch them early so that the target
|
||||
never sees them. */
|
||||
if (regnum >= gdbarch_num_regs (gdbarch)
|
||||
+ gdbarch_num_pseudo_regs (gdbarch))
|
||||
{
|
||||
struct value *val = value_of_user_reg (regnum, frame);
|
||||
|
||||
printf_filtered ("%s: ", start);
|
||||
print_scalar_formatted (value_contents (val),
|
||||
check_typedef (value_type (val)),
|
||||
'x', 0, gdb_stdout);
|
||||
printf_filtered ("\n");
|
||||
}
|
||||
else
|
||||
gdbarch_print_registers_info (gdbarch, gdb_stdout,
|
||||
frame, regnum, fpregs);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* A register number? (how portable is this one?). */
|
||||
{
|
||||
char *endptr;
|
||||
|
Loading…
Reference in New Issue
Block a user