Remove regmap from i386-linux-nat.c.
2010-04-22 H.J. Lu <hongjiu.lu@intel.com> * i386-linux-nat.c (regmap): Removed. (fetch_register): Replace regmap with i386_linux_gregset_reg_offset. (store_register): Likewise. (supply_gregset): Likewise. (fill_gregset): Likewise. * i386-linux-tdep.c (i386_linux_gregset_reg_offset): Make it global. * i386-linux-tdep.h (i386_linux_gregset_reg_offset): New.
This commit is contained in:
parent
f56dcb8879
commit
be0d295484
4 changed files with 31 additions and 31 deletions
|
@ -1,3 +1,17 @@
|
||||||
|
2010-04-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* i386-linux-nat.c (regmap): Removed.
|
||||||
|
(fetch_register): Replace regmap with
|
||||||
|
i386_linux_gregset_reg_offset.
|
||||||
|
(store_register): Likewise.
|
||||||
|
(supply_gregset): Likewise.
|
||||||
|
(fill_gregset): Likewise.
|
||||||
|
|
||||||
|
* i386-linux-tdep.c (i386_linux_gregset_reg_offset): Make it
|
||||||
|
global.
|
||||||
|
|
||||||
|
* i386-linux-tdep.h (i386_linux_gregset_reg_offset): New.
|
||||||
|
|
||||||
2010-04-22 Chris Moller <cmoller@redhat.com>
|
2010-04-22 Chris Moller <cmoller@redhat.com>
|
||||||
|
|
||||||
* cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
|
* cp-valprint.c (cp_print_value_fields): Replaced obstack_base()
|
||||||
|
|
|
@ -99,26 +99,6 @@ static int have_ptrace_getregset = -1;
|
||||||
those names are now used for the register sets used in the
|
those names are now used for the register sets used in the
|
||||||
`mcontext_t' type, and have a different size and layout. */
|
`mcontext_t' type, and have a different size and layout. */
|
||||||
|
|
||||||
/* Mapping between the general-purpose registers in `struct user'
|
|
||||||
format and GDB's register array layout. */
|
|
||||||
static int regmap[] =
|
|
||||||
{
|
|
||||||
EAX, ECX, EDX, EBX,
|
|
||||||
UESP, EBP, ESI, EDI,
|
|
||||||
EIP, EFL, CS, SS,
|
|
||||||
DS, ES, FS, GS,
|
|
||||||
-1, -1, -1, -1, /* st0, st1, st2, st3 */
|
|
||||||
-1, -1, -1, -1, /* st4, st5, st6, st7 */
|
|
||||||
-1, -1, -1, -1, /* fctrl, fstat, ftag, fiseg */
|
|
||||||
-1, -1, -1, -1, /* fioff, foseg, fooff, fop */
|
|
||||||
-1, -1, -1, -1, /* xmm0, xmm1, xmm2, xmm3 */
|
|
||||||
-1, -1, -1, -1, /* xmm4, xmm5, xmm6, xmm6 */
|
|
||||||
-1, /* mxcsr */
|
|
||||||
-1, -1, -1, -1, /* ymm0h, ymm1h, ymm2h, ymm3h */
|
|
||||||
-1, -1, -1, -1, /* ymm4h, ymm5h, ymm6h, ymm6h */
|
|
||||||
ORIG_EAX
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Which ptrace request retrieves which registers?
|
/* Which ptrace request retrieves which registers?
|
||||||
These apply to the corresponding SET requests as well. */
|
These apply to the corresponding SET requests as well. */
|
||||||
|
|
||||||
|
@ -168,7 +148,7 @@ fetch_register (struct regcache *regcache, int regno)
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
gdb_assert (!have_ptrace_getregs);
|
gdb_assert (!have_ptrace_getregs);
|
||||||
if (regmap[regno] == -1)
|
if (i386_linux_gregset_reg_offset[regno] == -1)
|
||||||
{
|
{
|
||||||
regcache_raw_supply (regcache, regno, NULL);
|
regcache_raw_supply (regcache, regno, NULL);
|
||||||
return;
|
return;
|
||||||
|
@ -180,7 +160,8 @@ fetch_register (struct regcache *regcache, int regno)
|
||||||
tid = PIDGET (inferior_ptid); /* Not a threaded program. */
|
tid = PIDGET (inferior_ptid); /* Not a threaded program. */
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
val = ptrace (PTRACE_PEEKUSER, tid, 4 * regmap[regno], 0);
|
val = ptrace (PTRACE_PEEKUSER, tid,
|
||||||
|
i386_linux_gregset_reg_offset[regno], 0);
|
||||||
if (errno != 0)
|
if (errno != 0)
|
||||||
error (_("Couldn't read register %s (#%d): %s."),
|
error (_("Couldn't read register %s (#%d): %s."),
|
||||||
gdbarch_register_name (get_regcache_arch (regcache), regno),
|
gdbarch_register_name (get_regcache_arch (regcache), regno),
|
||||||
|
@ -198,7 +179,7 @@ store_register (const struct regcache *regcache, int regno)
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
gdb_assert (!have_ptrace_getregs);
|
gdb_assert (!have_ptrace_getregs);
|
||||||
if (regmap[regno] == -1)
|
if (i386_linux_gregset_reg_offset[regno] == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* GNU/Linux LWP ID's are process ID's. */
|
/* GNU/Linux LWP ID's are process ID's. */
|
||||||
|
@ -208,7 +189,8 @@ store_register (const struct regcache *regcache, int regno)
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
regcache_raw_collect (regcache, regno, &val);
|
regcache_raw_collect (regcache, regno, &val);
|
||||||
ptrace (PTRACE_POKEUSER, tid, 4 * regmap[regno], val);
|
ptrace (PTRACE_POKEUSER, tid,
|
||||||
|
i386_linux_gregset_reg_offset[regno], val);
|
||||||
if (errno != 0)
|
if (errno != 0)
|
||||||
error (_("Couldn't write register %s (#%d): %s."),
|
error (_("Couldn't write register %s (#%d): %s."),
|
||||||
gdbarch_register_name (get_regcache_arch (regcache), regno),
|
gdbarch_register_name (get_regcache_arch (regcache), regno),
|
||||||
|
@ -225,16 +207,17 @@ store_register (const struct regcache *regcache, int regno)
|
||||||
void
|
void
|
||||||
supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp)
|
supply_gregset (struct regcache *regcache, const elf_gregset_t *gregsetp)
|
||||||
{
|
{
|
||||||
const elf_greg_t *regp = (const elf_greg_t *) gregsetp;
|
const gdb_byte *regp = (const gdb_byte *) gregsetp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < I386_NUM_GREGS; i++)
|
for (i = 0; i < I386_NUM_GREGS; i++)
|
||||||
regcache_raw_supply (regcache, i, regp + regmap[i]);
|
regcache_raw_supply (regcache, i,
|
||||||
|
regp + i386_linux_gregset_reg_offset[i]);
|
||||||
|
|
||||||
if (I386_LINUX_ORIG_EAX_REGNUM
|
if (I386_LINUX_ORIG_EAX_REGNUM
|
||||||
< gdbarch_num_regs (get_regcache_arch (regcache)))
|
< gdbarch_num_regs (get_regcache_arch (regcache)))
|
||||||
regcache_raw_supply (regcache, I386_LINUX_ORIG_EAX_REGNUM,
|
regcache_raw_supply (regcache, I386_LINUX_ORIG_EAX_REGNUM,
|
||||||
regp + ORIG_EAX);
|
regp + i386_linux_gregset_reg_offset[I386_LINUX_ORIG_EAX_REGNUM]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill register REGNO (if it is a general-purpose register) in
|
/* Fill register REGNO (if it is a general-purpose register) in
|
||||||
|
@ -245,18 +228,19 @@ void
|
||||||
fill_gregset (const struct regcache *regcache,
|
fill_gregset (const struct regcache *regcache,
|
||||||
elf_gregset_t *gregsetp, int regno)
|
elf_gregset_t *gregsetp, int regno)
|
||||||
{
|
{
|
||||||
elf_greg_t *regp = (elf_greg_t *) gregsetp;
|
gdb_byte *regp = (gdb_byte *) gregsetp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < I386_NUM_GREGS; i++)
|
for (i = 0; i < I386_NUM_GREGS; i++)
|
||||||
if (regno == -1 || regno == i)
|
if (regno == -1 || regno == i)
|
||||||
regcache_raw_collect (regcache, i, regp + regmap[i]);
|
regcache_raw_collect (regcache, i,
|
||||||
|
regp + i386_linux_gregset_reg_offset[i]);
|
||||||
|
|
||||||
if ((regno == -1 || regno == I386_LINUX_ORIG_EAX_REGNUM)
|
if ((regno == -1 || regno == I386_LINUX_ORIG_EAX_REGNUM)
|
||||||
&& I386_LINUX_ORIG_EAX_REGNUM
|
&& I386_LINUX_ORIG_EAX_REGNUM
|
||||||
< gdbarch_num_regs (get_regcache_arch (regcache)))
|
< gdbarch_num_regs (get_regcache_arch (regcache)))
|
||||||
regcache_raw_collect (regcache, I386_LINUX_ORIG_EAX_REGNUM,
|
regcache_raw_collect (regcache, I386_LINUX_ORIG_EAX_REGNUM,
|
||||||
regp + ORIG_EAX);
|
regp + i386_linux_gregset_reg_offset[I386_LINUX_ORIG_EAX_REGNUM]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_PTRACE_GETREGS
|
#ifdef HAVE_PTRACE_GETREGS
|
||||||
|
|
|
@ -529,7 +529,7 @@ i386_linux_get_syscall_number (struct gdbarch *gdbarch,
|
||||||
format and GDB's register cache layout. */
|
format and GDB's register cache layout. */
|
||||||
|
|
||||||
/* From <sys/reg.h>. */
|
/* From <sys/reg.h>. */
|
||||||
static int i386_linux_gregset_reg_offset[] =
|
int i386_linux_gregset_reg_offset[] =
|
||||||
{
|
{
|
||||||
6 * 4, /* %eax */
|
6 * 4, /* %eax */
|
||||||
1 * 4, /* %ecx */
|
1 * 4, /* %ecx */
|
||||||
|
|
|
@ -65,4 +65,6 @@ extern struct target_desc *tdesc_i386_avx_linux;
|
||||||
the process/thread is in. */
|
the process/thread is in. */
|
||||||
#define I386_LINUX_XSAVE_XCR0_OFFSET 464
|
#define I386_LINUX_XSAVE_XCR0_OFFSET 464
|
||||||
|
|
||||||
|
extern int i386_linux_gregset_reg_offset[];
|
||||||
|
|
||||||
#endif /* i386-linux-tdep.h */
|
#endif /* i386-linux-tdep.h */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue