(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.
+2001-10-31 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.
+
2001-10-31 Christopher Faylor <cgf@redhat.com>
* win32-nat.c (register_loaded_dll): Attempt to ensure that the case of
/* 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,
#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. */
#define STAB_REG_TO_REGNUM(reg) i386_stab_reg_to_regnum ((reg))
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", \
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", \
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", \
#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. */
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. */