Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@mips.com>
To: gdb-patches@sourceware.org
Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
Subject: MIPS/Linux: Register number overlap in target descriptions
Date: Tue, 04 Dec 2007 15:01:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.61.0712041447380.21152@perivale.mips.com> (raw)

Hello,

 Due to the way target register numbers are assigned in the target 
description (using the last number used plus one unless overridden) we 
have two registers overlapping each other.  Specifically, both "pc" and 
"f0" are assigned 37 as their number, which happens because the 
description of "f0" is provided after one of "cause", which specifies 36 
explicitly and "pc" is assigned 37 likewise.  I gather it breaks register 
numbering as such too as there are places elsewhere in the code that refer 
to some registers by number literally.

 To rectify, the change specifies 38 for "f0" explicitly.  For consistency 
and to raise people's attention, I have similarly decided to specify 0 for 
"r0".

 Tested natively for mips-linux-gnu with no regressions.

2007-12-04  Maciej W. Rozycki  <macro@mips.com>

	* features/mips-cpu.xml: Specify "regnum" for "r0" explicitly.
	* features/mips64-cpu.xml: Likewise.
	* features/mips-fpu.xml: Specify "regnum" for "f0" explicitly.
	* features/mips64-fpu.xml: Likewise.
	* features/mips-linux.c: Regenerate.
	* features/mips64-linux.c: Regenerate.

 OK to apply?

  Maciej

gdb-mips-tdesc.diff
Index: gdb/src/gdb/features/mips-cpu.xml
===================================================================
--- gdb.orig/src/gdb/features/mips-cpu.xml	2007-12-03 11:05:25.000000000 +0000
+++ gdb/src/gdb/features/mips-cpu.xml	2007-12-03 11:07:06.000000000 +0000
@@ -7,7 +7,7 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.mips.cpu">
-  <reg name="r0" bitsize="32"/>
+  <reg name="r0" bitsize="32" regnum="0"/>
   <reg name="r1" bitsize="32"/>
   <reg name="r2" bitsize="32"/>
   <reg name="r3" bitsize="32"/>
Index: gdb/src/gdb/features/mips-fpu.xml
===================================================================
--- gdb.orig/src/gdb/features/mips-fpu.xml	2007-12-03 11:05:25.000000000 +0000
+++ gdb/src/gdb/features/mips-fpu.xml	2007-12-03 11:07:15.000000000 +0000
@@ -7,7 +7,7 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.mips.fpu">
-  <reg name="f0" bitsize="32" type="ieee_single"/>
+  <reg name="f0" bitsize="32" type="ieee_single" regnum="38"/>
   <reg name="f1" bitsize="32" type="ieee_single"/>
   <reg name="f2" bitsize="32" type="ieee_single"/>
   <reg name="f3" bitsize="32" type="ieee_single"/>
Index: gdb/src/gdb/features/mips64-cpu.xml
===================================================================
--- gdb.orig/src/gdb/features/mips64-cpu.xml	2007-12-03 11:05:25.000000000 +0000
+++ gdb/src/gdb/features/mips64-cpu.xml	2007-12-03 11:06:01.000000000 +0000
@@ -7,7 +7,7 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.mips.cpu">
-  <reg name="r0" bitsize="64"/>
+  <reg name="r0" bitsize="64" regnum="0"/>
   <reg name="r1" bitsize="64"/>
   <reg name="r2" bitsize="64"/>
   <reg name="r3" bitsize="64"/>
Index: gdb/src/gdb/features/mips64-fpu.xml
===================================================================
--- gdb.orig/src/gdb/features/mips64-fpu.xml	2007-12-03 11:05:25.000000000 +0000
+++ gdb/src/gdb/features/mips64-fpu.xml	2007-12-03 11:06:48.000000000 +0000
@@ -7,7 +7,7 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.mips.fpu">
-  <reg name="f0" bitsize="64" type="ieee_double"/>
+  <reg name="f0" bitsize="64" type="ieee_double" regnum="38"/>
   <reg name="f1" bitsize="64" type="ieee_double"/>
   <reg name="f2" bitsize="64" type="ieee_double"/>
   <reg name="f3" bitsize="64" type="ieee_double"/>
Index: gdb/src/gdb/features/mips-linux.c
===================================================================
--- gdb.orig/src/gdb/features/mips-linux.c	2007-12-03 11:13:40.000000000 +0000
+++ gdb/src/gdb/features/mips-linux.c	2007-12-03 11:53:07.000000000 +0000
@@ -57,43 +57,43 @@
   tdesc_create_reg (feature, "cause", 36, 1, NULL, 32, "int");
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu");
-  tdesc_create_reg (feature, "f0", 37, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f1", 38, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f2", 39, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f3", 40, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f4", 41, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f5", 42, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f6", 43, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f7", 44, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f8", 45, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f9", 46, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f10", 47, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f11", 48, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f12", 49, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f13", 50, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f14", 51, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f15", 52, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f16", 53, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f17", 54, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f18", 55, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f19", 56, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f20", 57, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f21", 58, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f22", 59, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f23", 60, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f24", 61, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f25", 62, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f26", 63, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f27", 64, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f28", 65, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f29", 66, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f30", 67, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "f31", 68, 1, NULL, 32, "ieee_single");
-  tdesc_create_reg (feature, "fcsr", 69, 1, "float", 32, "int");
-  tdesc_create_reg (feature, "fir", 70, 1, "float", 32, "int");
+  tdesc_create_reg (feature, "f0", 38, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f1", 39, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f2", 40, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f3", 41, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f4", 42, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f5", 43, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f6", 44, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f7", 45, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f8", 46, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f9", 47, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f10", 48, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f11", 49, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f12", 50, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f13", 51, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f14", 52, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f15", 53, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f16", 54, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f17", 55, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f18", 56, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f19", 57, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f20", 58, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f21", 59, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f22", 60, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f23", 61, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f24", 62, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f25", 63, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f26", 64, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f27", 65, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f28", 66, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f29", 67, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f30", 68, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "f31", 69, 1, NULL, 32, "ieee_single");
+  tdesc_create_reg (feature, "fcsr", 70, 1, "float", 32, "int");
+  tdesc_create_reg (feature, "fir", 71, 1, "float", 32, "int");
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux");
-  tdesc_create_reg (feature, "restart", 71, 1, "system", 32, "int");
+  tdesc_create_reg (feature, "restart", 72, 1, "system", 32, "int");
 
   tdesc_mips_linux = result;
 }
Index: gdb/src/gdb/features/mips64-linux.c
===================================================================
--- gdb.orig/src/gdb/features/mips64-linux.c	2007-12-03 11:13:40.000000000 +0000
+++ gdb/src/gdb/features/mips64-linux.c	2007-12-03 11:53:07.000000000 +0000
@@ -57,43 +57,43 @@
   tdesc_create_reg (feature, "cause", 36, 1, NULL, 64, "int");
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.fpu");
-  tdesc_create_reg (feature, "f0", 37, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f1", 38, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f2", 39, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f3", 40, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f4", 41, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f5", 42, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f6", 43, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f7", 44, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f8", 45, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f9", 46, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f10", 47, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f11", 48, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f12", 49, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f13", 50, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f14", 51, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f15", 52, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f16", 53, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f17", 54, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f18", 55, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f19", 56, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f20", 57, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f21", 58, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f22", 59, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f23", 60, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f24", 61, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f25", 62, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f26", 63, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f27", 64, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f28", 65, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f29", 66, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f30", 67, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "f31", 68, 1, NULL, 64, "ieee_double");
-  tdesc_create_reg (feature, "fcsr", 69, 1, "float", 64, "int");
-  tdesc_create_reg (feature, "fir", 70, 1, "float", 64, "int");
+  tdesc_create_reg (feature, "f0", 38, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f1", 39, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f2", 40, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f3", 41, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f4", 42, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f5", 43, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f6", 44, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f7", 45, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f8", 46, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f9", 47, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f10", 48, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f11", 49, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f12", 50, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f13", 51, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f14", 52, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f15", 53, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f16", 54, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f17", 55, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f18", 56, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f19", 57, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f20", 58, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f21", 59, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f22", 60, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f23", 61, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f24", 62, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f25", 63, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f26", 64, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f27", 65, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f28", 66, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f29", 67, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f30", 68, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "f31", 69, 1, NULL, 64, "ieee_double");
+  tdesc_create_reg (feature, "fcsr", 70, 1, "float", 64, "int");
+  tdesc_create_reg (feature, "fir", 71, 1, "float", 64, "int");
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.linux");
-  tdesc_create_reg (feature, "restart", 71, 1, "system", 64, "int");
+  tdesc_create_reg (feature, "restart", 72, 1, "system", 64, "int");
 
   tdesc_mips64_linux = result;
 }


             reply	other threads:[~2007-12-04 15:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-04 15:01 Maciej W. Rozycki [this message]
2007-12-04 15:10 ` Daniel Jacobowitz
2007-12-04 15:20   ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.61.0712041447380.21152@perivale.mips.com \
    --to=macro@mips.com \
    --cc=gdb-patches@sourceware.org \
    --cc=macro@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox