Re: [patch/rfc] Don't include vector registers in ``info registers''

Andrew Cagney
2002-08-09T00:07:41Z

[-- Attachment #1: Type: text/plain, Size: 940 bytes --]

[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

[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 1747 bytes --]

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
{