Add new GDB command "maint print user-registers"
This adds a command for listing the "user" registers. So far GDB offered no means of determining the set of user registers and omitted them from all other register listings. gdb/ChangeLog: * user-regs.c: Include "arch-utils.h", "command.h", and "cli/cli-cmds.h". (maintenance_print_user_registers): New. (_initialize_user_regs): Register new "maint print user-registers" subcommand. * NEWS: Mention new GDB command "maint print user-registers". gdb/doc/ChangeLog: * gdb.texinfo: Document "maint print user-registers".
This commit is contained in:
parent
3e29f34a4e
commit
f5b95c01fb
5 changed files with 52 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
|||
2014-12-12 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* user-regs.c: Include "arch-utils.h", "command.h", and
|
||||
"cli/cli-cmds.h".
|
||||
(maintenance_print_user_registers): New.
|
||||
(_initialize_user_regs): Register new "maint print user-registers"
|
||||
subcommand.
|
||||
* NEWS: Mention new GDB command "maint print user-registers".
|
||||
|
||||
2014-12-12 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
Maciej W. Rozycki <macro@mips.com>
|
||||
Pedro Alves <pedro@codesourcery.com>
|
||||
|
|
3
gdb/NEWS
3
gdb/NEWS
|
@ -45,6 +45,9 @@ add-auto-load-scripts-directory directory
|
|||
Add entries to the list of directories from which to load auto-loaded
|
||||
scripts.
|
||||
|
||||
maint print user-registers
|
||||
List all currently available "user" registers.
|
||||
|
||||
* On resume, GDB now always passes the signal the program had stopped
|
||||
for to the thread the signal was sent to, even if the user changed
|
||||
threads before resuming. Previously GDB would often (but not
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2014-12-12 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* gdb.texinfo: Document "maint print user-registers".
|
||||
|
||||
2014-12-08 Doug Evans <dje@google.com>
|
||||
|
||||
* python.texi (Objfiles In Python): Document Objfile.owner.
|
||||
|
|
|
@ -10256,6 +10256,7 @@ the selected stack frame. The @var{regname} may be any register name valid on
|
|||
the machine you are using, with or without the initial @samp{$}.
|
||||
@end table
|
||||
|
||||
@anchor{standard registers}
|
||||
@cindex stack pointer register
|
||||
@cindex program counter register
|
||||
@cindex process status register
|
||||
|
@ -33435,6 +33436,17 @@ If @var{regexp} is specified, only print object files whose names
|
|||
match @var{regexp}. For each object file, this command prints its name,
|
||||
address in memory, and all of its psymtabs and symtabs.
|
||||
|
||||
@kindex maint print user-registers
|
||||
@cindex user registers
|
||||
@item maint print user-registers
|
||||
List all currently available @dfn{user registers}. User registers
|
||||
typically provide alternate names for actual hardware registers. They
|
||||
include the four ``standard'' registers @code{$fp}, @code{$pc},
|
||||
@code{$sp}, and @code{$ps}. @xref{standard registers}. User
|
||||
registers can be used in expressions in the same way as the canonical
|
||||
register names, but only the latter are listed by the @code{info
|
||||
registers} and @code{maint print registers} commands.
|
||||
|
||||
@kindex maint print section-scripts
|
||||
@cindex info for known .debug_gdb_scripts-loaded scripts
|
||||
@item maint print section-scripts [@var{regexp}]
|
||||
|
|
|
@ -23,6 +23,9 @@
|
|||
#include "user-regs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "frame.h"
|
||||
#include "arch-utils.h"
|
||||
#include "command.h"
|
||||
#include "cli/cli-cmds.h"
|
||||
|
||||
/* A table of user registers.
|
||||
|
||||
|
@ -215,10 +218,31 @@ value_of_user_reg (int regnum, struct frame_info *frame)
|
|||
return reg->read (frame, reg->baton);
|
||||
}
|
||||
|
||||
static void
|
||||
maintenance_print_user_registers (char *args, int from_tty)
|
||||
{
|
||||
struct gdbarch *gdbarch = get_current_arch ();
|
||||
struct gdb_user_regs *regs;
|
||||
struct user_reg *reg;
|
||||
int regnum;
|
||||
|
||||
regs = gdbarch_data (gdbarch, user_regs_data);
|
||||
regnum = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
|
||||
|
||||
fprintf_unfiltered (gdb_stdout, " Nr Name\n");
|
||||
for (reg = regs->first; reg != NULL; reg = reg->next, ++regnum)
|
||||
fprintf_unfiltered (gdb_stdout, "%3d %s\n", regnum, reg->name);
|
||||
}
|
||||
|
||||
extern initialize_file_ftype _initialize_user_regs; /* -Wmissing-prototypes */
|
||||
|
||||
void
|
||||
_initialize_user_regs (void)
|
||||
{
|
||||
user_regs_data = gdbarch_data_register_post_init (user_regs_init);
|
||||
|
||||
add_cmd ("user-registers", class_maintenance,
|
||||
maintenance_print_user_registers,
|
||||
_("List the names of the current user registers.\n"),
|
||||
&maintenanceprintlist);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue