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:
Andreas Arnez 2014-12-12 17:11:22 +01:00 committed by Andreas Krebbel
parent 3e29f34a4e
commit f5b95c01fb
5 changed files with 52 additions and 0 deletions

View file

@ -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>

View file

@ -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

View file

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

View file

@ -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}]

View file

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