* 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.
This commit is contained in:
Mark Kettenis 2001-10-31 22:24:06 +00:00
parent aaa68313b8
commit fc633446cd
6 changed files with 49 additions and 22 deletions

View file

@ -1,3 +1,14 @@
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> 2001-10-31 Christopher Faylor <cgf@redhat.com>
* win32-nat.c (register_loaded_dll): Attempt to ensure that the case of * win32-nat.c (register_loaded_dll): Attempt to ensure that the case of

View file

@ -127,25 +127,6 @@ extern CORE_ADDR i386_saved_pc_after_call (struct frame_info *frame);
/* Largest number of registers we could have in any configuration. */ /* Largest number of registers we could have in any configuration. */
#define MAX_NUM_REGS (16 + 16 + 9) #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. /* Register numbers of various important registers.
Note that some of these values are "real" register numbers, Note that some of these values are "real" register numbers,
and correspond to the general registers of the machine, and correspond to the general registers of the machine,
@ -195,6 +176,11 @@ extern CORE_ADDR i386_saved_pc_after_call (struct frame_info *frame);
#define FPU_REG_RAW_SIZE (10) #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. */ /* Use the "default" register numbering scheme for stabs and COFF. */
#define STAB_REG_TO_REGNUM(reg) i386_stab_reg_to_regnum ((reg)) #define STAB_REG_TO_REGNUM(reg) i386_stab_reg_to_regnum ((reg))

View file

@ -34,7 +34,7 @@
scheme (which is the same as the 386 scheme) and also regmap in the various scheme (which is the same as the 386 scheme) and also regmap in the various
*-nat.c files. */ *-nat.c files. */
#undef REGISTER_NAMES #undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \ #define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
"esp", "ebp", "esi", "edi", \ "esp", "ebp", "esi", "edi", \
"eip", "eflags", "cs", "ss", \ "eip", "eflags", "cs", "ss", \

View file

@ -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 scheme (which is the same as the 386 scheme) and also regmap in the various
*-nat.c files. */ *-nat.c files. */
#undef REGISTER_NAMES #undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \ #define REGISTER_NAMES { "eax", "ecx", "edx", "ebx", \
"esp", "ebp", "esi", "edi", \ "esp", "ebp", "esi", "edi", \
"eip", "eflags", "st0", "st1", \ "eip", "eflags", "st0", "st1", \

View file

@ -66,7 +66,7 @@
break mysteriously for no apparent reason. Also note that the st(0)... break mysteriously for no apparent reason. Also note that the st(0)...
st(7) 387 registers are represented as st0...st7. */ st(7) 387 registers are represented as st0...st7. */
#undef REGISTER_NAMES #undef REGISTER_NAME
#define REGISTER_NAMES { "eax", "edx", "ecx", "st0", "st1", \ #define REGISTER_NAMES { "eax", "edx", "ecx", "st0", "st1", \
"ebx", "esi", "edi", "st2", "st3", \ "ebx", "esi", "edi", "st2", "st3", \
"st4", "st5", "st6", "st7", "esp", \ "st4", "st5", "st6", "st7", "esp", \

View file

@ -37,6 +37,23 @@
#include "gdb_assert.h" #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 /* i386_register_byte[i] is the offset into the register file of the
start of register number i. We initialize this from start of register number i. We initialize this from
i386_register_raw_size. */ i386_register_raw_size. */
@ -62,6 +79,19 @@ int i386_register_raw_size[MAX_NUM_REGS] = {
type of register i. */ type of register i. */
int i386_register_virtual_size[MAX_NUM_REGS]; 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 /* Convert stabs register number REG to the appropriate register
number used by GDB. */ number used by GDB. */