+2007-10-09 Markus Deuling <deuling@de.ibm.com>
+
+ * i386-linux-nat.c (fetch_register): Use get_regcache_arch to get at
+ the current architecture by regcache.
+ (store_register, supply_gregset, fill_gregset, i386_linux_resume)
+ (i386_linux_fetch_inferior_registers)
+ (i386_linux_store_inferior_registers): Likewise.
+ * i386gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Likewise.
+ * i386-nto-tdep.c (i386nto_supply_gregset): Likewise.
+ * i386v4-nat.c (supply_fpregset, fill_fpregset): Likewise.
+ * i386-tdep.c (i386_unwind_pc): Replace current_gdbarch by gdbarch.
+ (i386_extract_return_value, i386_store_return_value): Likewise.
+ * i386-tdep.c (i386_frame_prev_register): Use get_frame_arch to get at
+ the current architecture by frame_info.
+ (i386_sigtramp_frame_cache, i386_get_longjmp_target)
+ (i386_register_to_value, i386_value_to_register): Likewise.
+
2007-10-09 Markus Deuling <deuling@de.ibm.com>
* monitor.c (monitor_supply_register): Use get_regcache_arch to get at
val = ptrace (PTRACE_PEEKUSER, tid, 4 * regmap[regno], 0);
if (errno != 0)
error (_("Couldn't read register %s (#%d): %s."),
- gdbarch_register_name (current_gdbarch, regno),
+ gdbarch_register_name (get_regcache_arch (regcache), regno),
regno, safe_strerror (errno));
regcache_raw_supply (regcache, regno, &val);
ptrace (PTRACE_POKEUSER, tid, 4 * regmap[regno], val);
if (errno != 0)
error (_("Couldn't write register %s (#%d): %s."),
- gdbarch_register_name (current_gdbarch, regno),
+ gdbarch_register_name (get_regcache_arch (regcache), regno),
regno, safe_strerror (errno));
}
\f
for (i = 0; i < I386_NUM_GREGS; i++)
regcache_raw_supply (regcache, i, regp + regmap[i]);
- if (I386_LINUX_ORIG_EAX_REGNUM < gdbarch_num_regs (current_gdbarch))
+ if (I386_LINUX_ORIG_EAX_REGNUM
+ < gdbarch_num_regs (get_regcache_arch (regcache)))
regcache_raw_supply (regcache, I386_LINUX_ORIG_EAX_REGNUM,
regp + ORIG_EAX);
}
regcache_raw_collect (regcache, i, regp + regmap[i]);
if ((regno == -1 || regno == I386_LINUX_ORIG_EAX_REGNUM)
- && I386_LINUX_ORIG_EAX_REGNUM < gdbarch_num_regs (current_gdbarch))
+ && I386_LINUX_ORIG_EAX_REGNUM
+ < gdbarch_num_regs (get_regcache_arch (regcache)))
regcache_raw_collect (regcache, I386_LINUX_ORIG_EAX_REGNUM,
regp + ORIG_EAX);
}
{
int i;
- for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++)
+ for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
if (regno == -1 || regno == i)
fetch_register (regcache, i);
{
int i;
- for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++)
+ for (i = 0; i < gdbarch_num_regs (get_regcache_arch (regcache)); i++)
if (regno == -1 || regno == i)
store_register (regcache, i);
request = PTRACE_SINGLESTEP;
- regcache_cooked_read_unsigned (regcache,
- gdbarch_pc_regnum (current_gdbarch), &pc);
+ regcache_cooked_read_unsigned
+ (regcache, gdbarch_pc_regnum (get_regcache_arch (regcache)), &pc);
/* Returning from a signal trampoline is done by calling a
special system call (sigreturn or rt_sigreturn, see
static void
i386nto_supply_gregset (struct regcache *regcache, char *gpregs)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
if(tdep->gregset == NULL)
- tdep->gregset = regset_alloc (current_gdbarch, i386_supply_gregset,
+ tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
i386_collect_gregset);
gdb_assert (tdep->gregset_reg_offset == i386nto_gregset_reg_offset);
{
gdb_byte buf[8];
- frame_unwind_register (next_frame, gdbarch_pc_regnum (current_gdbarch), buf);
+ frame_unwind_register (next_frame, gdbarch_pc_regnum (gdbarch), buf);
return extract_typed_address (buf, builtin_type_void_func_ptr);
}
\f
{
/* Read the value in from memory. */
read_memory (*addrp, valuep,
- register_size (current_gdbarch, regnum));
+ register_size (get_frame_arch (next_frame), regnum));
}
return;
}
i386_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
{
struct i386_frame_cache *cache;
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
CORE_ADDR addr;
gdb_byte buf[4];
/* Don't use I386_ESP_REGNUM here, since this function is also used
for AMD64. */
- get_frame_register (frame, gdbarch_sp_regnum (current_gdbarch), buf);
+ get_frame_register (frame, gdbarch_sp_regnum (get_frame_arch (frame)), buf);
sp = extract_typed_address (buf, builtin_type_void_data_ptr);
if (target_read_memory (sp + len, buf, len))
return 0;
}
else
{
- int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
- int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+ int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
+ int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
if (len <= low_size)
{
}
else
{
- int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
- int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
+ int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
+ int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
if (len <= low_size)
regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
while (len > 0)
{
gdb_assert (regnum != -1);
- gdb_assert (register_size (current_gdbarch, regnum) == 4);
+ gdb_assert (register_size (get_frame_arch (frame), regnum) == 4);
get_frame_register (frame, regnum, to);
regnum = i386_next_regnum (regnum);
while (len > 0)
{
gdb_assert (regnum != -1);
- gdb_assert (register_size (current_gdbarch, regnum) == 4);
+ gdb_assert (register_size (get_frame_arch (frame), regnum) == 4);
put_frame_register (frame, regnum, from);
regnum = i386_next_regnum (regnum);
else
{
proc_debug (thread, "fetching register %s",
- gdbarch_register_name (current_gdbarch, regno));
+ gdbarch_register_name (get_regcache_arch (regcache),
+ regno));
regcache_raw_supply (regcache, regno,
REG_ADDR (state, regno));
gnu_store_registers (struct regcache *regcache, int regno)
{
struct proc *thread;
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
/* Make sure we know about new threads. */
inf_update_procs (current_inferior);
if ((thread->fetched_regs & (1 << check_regno))
&& memcpy (REG_ADDR (&old_state, check_regno),
REG_ADDR (state, check_regno),
- register_size (current_gdbarch, check_regno)))
+ register_size (gdbarch, check_regno)))
/* Register CHECK_REGNO has changed! Ack! */
{
warning (_("Register %s changed after the thread was aborted"),
- gdbarch_register_name (current_gdbarch, check_regno));
+ gdbarch_register_name (gdbarch, check_regno));
if (regno >= 0 && regno != check_regno)
/* Update GDB's copy of the register. */
regcache_raw_supply (regcache, check_regno,
else
{
proc_debug (thread, "storing register %s",
- gdbarch_register_name (current_gdbarch, regno));
+ gdbarch_register_name (gdbarch, regno));
gdb_assert (regcache_valid_p (regcache, regno));
regcache_raw_collect (regcache, regno, REG_ADDR (state, regno));
void
supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp)
{
- if (gdbarch_fp0_regnum (current_gdbarch) == 0)
+ if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0)
return;
i387_supply_fsave (regcache, -1, fpregsetp);
fill_fpregset (const struct regcache *regcache,
fpregset_t *fpregsetp, int regno)
{
- if (gdbarch_fp0_regnum (current_gdbarch) == 0)
+ if (gdbarch_fp0_regnum (get_regcache_arch (regcache)) == 0)
return;
i387_collect_fsave (regcache, regno, fpregsetp);