This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


[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
 	{

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]