This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH] Convert i386 target to use REGISTER_NAME
- To: gdb-patches at sources dot redhat dot com
- Subject: [PATCH] Convert i386 target to use REGISTER_NAME
- From: Mark Kettenis <kettenis at wins dot uva dot nl>
- Date: Wed, 31 Oct 2001 23:38:01 +0100
I checked this in. I went for the easy way out for a few archaic
targets.
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* config/i386/tm-i386.h (REGISTER_NAMES): Remove.
(REGISTER_NAME): New define.
(i386_register_name): New prototype.
* i386-tdep.c (i386_register_names): New variable.
(i386_register_name): New function.
* config/i386/tm-i386os9k.h, config/i386/tm-ptx.h,
config/i386/tm-symmetry.h: Undefine REGISTER_NAME instead of
REGISTER_NAMES.
Index: i386-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-tdep.c,v
retrieving revision 1.40
diff -u -p -r1.40 i386-tdep.c
--- i386-tdep.c 2001/10/29 23:49:31 1.40
+++ i386-tdep.c 2001/10/31 22:16:46
@@ -37,6 +37,23 @@
#include "gdb_assert.h"
+/* Names of the registers. The first 10 registers match the register
+ numbering scheme used by GCC for stabs and DWARF. */
+static char *i386_register_names[] =
+{
+ "eax", "ecx", "edx", "ebx",
+ "esp", "ebp", "esi", "edi",
+ "eip", "eflags", "cs", "ss",
+ "ds", "es", "fs", "gs",
+ "st0", "st1", "st2", "st3",
+ "st4", "st5", "st6", "st7",
+ "fctrl", "fstat", "ftag", "fiseg",
+ "fioff", "foseg", "fooff", "fop",
+ "xmm0", "xmm1", "xmm2", "xmm3",
+ "xmm4", "xmm5", "xmm6", "xmm7",
+ "mxcsr"
+};
+
/* i386_register_byte[i] is the offset into the register file of the
start of register number i. We initialize this from
i386_register_raw_size. */
@@ -61,6 +78,19 @@ int i386_register_raw_size[MAX_NUM_REGS]
/* i386_register_virtual_size[i] is the size in bytes of the virtual
type of register i. */
int i386_register_virtual_size[MAX_NUM_REGS];
+
+/* Return the name of register REG. */
+
+char *
+i386_register_name (int reg)
+{
+ if (reg < 0)
+ return NULL;
+ if (reg >= sizeof (i386_register_names) / sizeof (*i386_register_names))
+ return NULL;
+
+ return i386_register_names[reg];
+}
/* Convert stabs register number REG to the appropriate register
number used by GDB. */
Index: config/i386/tm-i386.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/tm-i386.h,v
retrieving revision 1.20
diff -u -p -r1.20 tm-i386.h
--- config/i386/tm-i386.h 2001/07/28 19:30:41 1.20
+++ config/i386/tm-i386.h 2001/10/31 22:16:46
@@ -127,25 +127,6 @@ extern CORE_ADDR i386_saved_pc_after_cal
/* Largest number of registers we could have in any configuration. */
#define MAX_NUM_REGS (16 + 16 + 9)
-/* Initializer for an array of names of registers. There should be at least
- NUM_REGS strings in this initializer. Any excess ones are simply ignored.
- The order of the first 8 registers must match the compiler's numbering
- scheme (which is the same as the 386 scheme) and also regmap in the various
- *-nat.c files. */
-
-#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
- "esp", "ebp", "esi", "edi", \
- "eip", "eflags", "cs", "ss", \
- "ds", "es", "fs", "gs", \
- "st0", "st1", "st2", "st3", \
- "st4", "st5", "st6", "st7", \
- "fctrl", "fstat", "ftag", "fiseg", \
- "fioff", "foseg", "fooff", "fop", \
- "xmm0", "xmm1", "xmm2", "xmm3", \
- "xmm4", "xmm5", "xmm6", "xmm7", \
- "mxcsr" \
- }
-
/* Register numbers of various important registers.
Note that some of these values are "real" register numbers,
and correspond to the general registers of the machine,
@@ -194,6 +175,11 @@ extern CORE_ADDR i386_saved_pc_after_cal
#define IS_SSE_REGNUM(n) (XMM0_REGNUM <= (n) && (n) <= XMM7_REGNUM)
#define FPU_REG_RAW_SIZE (10)
+
+/* Return the name of register REG. */
+
+#define REGISTER_NAME(reg) i386_register_name ((reg))
+extern char *i386_register_name (int reg);
/* Use the "default" register numbering scheme for stabs and COFF. */
Index: config/i386/tm-i386os9k.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/tm-i386os9k.h,v
retrieving revision 1.2
diff -u -p -r1.2 tm-i386os9k.h
--- config/i386/tm-i386os9k.h 2001/03/06 08:21:29 1.2
+++ config/i386/tm-i386os9k.h 2001/10/31 22:16:46
@@ -34,7 +34,7 @@
scheme (which is the same as the 386 scheme) and also regmap in the various
*-nat.c files. */
-#undef REGISTER_NAMES
+#undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
"esp", "ebp", "esi", "edi", \
"eip", "eflags", "cs", "ss", \
Index: config/i386/tm-ptx.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/tm-ptx.h,v
retrieving revision 1.3
diff -u -p -r1.3 tm-ptx.h
--- config/i386/tm-ptx.h 2001/03/06 08:21:29 1.3
+++ config/i386/tm-ptx.h 2001/10/31 22:16:46
@@ -69,7 +69,7 @@ since it uses host specific ptrace calls
scheme (which is the same as the 386 scheme) and also regmap in the various
*-nat.c files. */
-#undef REGISTER_NAMES
+#undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
"esp", "ebp", "esi", "edi", \
"eip", "eflags", "st0", "st1", \
Index: config/i386/tm-symmetry.h
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/tm-symmetry.h,v
retrieving revision 1.6
diff -u -p -r1.6 tm-symmetry.h
--- config/i386/tm-symmetry.h 2001/08/12 03:19:22 1.6
+++ config/i386/tm-symmetry.h 2001/10/31 22:16:46
@@ -66,7 +66,7 @@
break mysteriously for no apparent reason. Also note that the st(0)...
st(7) 387 registers are represented as st0...st7. */
-#undef REGISTER_NAMES
+#undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "edx", "ecx", "st0", "st1", \
"ebx", "esi", "edi", "st2", "st3", \
"st4", "st5", "st6", "st7", "esp", \