This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch/rfc] Don't include vector registers in ``info registers''
- From: Andrew Cagney <ac131313 at ges dot redhat dot com>
- To: Andrew Cagney <ac131313 at ges dot redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Thu, 08 Aug 2002 20:07:37 -0400
- Subject: Re: [patch/rfc] Don't include vector registers in ``info registers''
- References: <3D53041D.90609@ges.redhat.com>
[With patch]
Hello,
The attached patch modifies the generic ``info registsters'' command so that it precludes vector registers (in addition to floating-point registers). The online doco indicates:
(gdb) help info registers
List of integer registers and their contents, for selected stack frame.
Register name as argument means describe only that register.
(gdb) help info all-registers
List of all registers and their contents, for selected stack frame.
Register name as argument means describe only that register.
I think the change makes the behavour a better match for both the documentation and what I think is the intent of the command. Print a minimal set of registers.
It will eventually affect the i386 -- I've a patch to change the type of xmm [and mmx] registers to true vectors. When that is in, ``info registers'' will stop displaying the xmm registers.
Thoughts?
enjoy,
Andrew
2002-08-08 Andrew Cagney <cagney@redhat.com>
* infcmd.c (do_registers_info): Rename parameter ``fpregs'' to
``print_all''. Only print vector registers when ``print_all''.
Index: infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.49
diff -u -r1.49 infcmd.c
--- infcmd.c 3 Jul 2002 20:36:54 -0000 1.49
+++ infcmd.c 8 Aug 2002 21:14:22 -0000
@@ -1549,9 +1549,9 @@
#ifdef REGISTER_NAMES
char *gdb_register_names[] = REGISTER_NAMES;
#endif
-/* Print out the machine register regnum. If regnum is -1,
- print all registers (fpregs == 1) or all non-float registers
- (fpregs == 0).
+/* Print out the machine register regnum. If regnum is -1, print all
+ registers (all == 1) or all non-float and non-vector registers (all
+ == 0).
For most machines, having all_registers_info() print the
register(s) one per line is good enough. If a different format
@@ -1561,7 +1561,7 @@
to provide that format. */
void
-do_registers_info (int regnum, int fpregs)
+do_registers_info (int regnum, int print_all)
{
register int i;
int numregs = NUM_REGS + NUM_PSEUDO_REGS;
@@ -1570,11 +1570,17 @@
for (i = 0; i < numregs; i++)
{
- /* Decide between printing all regs, nonfloat regs, or specific reg. */
+ /* Decide between printing all regs, non-float / vector regs, or
+ specific reg. */
if (regnum == -1)
{
- if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT && !fpregs)
- continue;
+ if (!print_all)
+ {
+ if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
+ continue;
+ if (TYPE_VECTOR (REGISTER_VIRTUAL_TYPE (i)))
+ continue;
+ }
}
else
{