+2007-11-07 Markus Deuling <deuling@de.ibm.com>
+
+ * shnbsd-tdep.c (shnbsd_supply_gregset, shnbsd_collect_gregset): Use
+ get_regcache_arch to get at the current architecture by regcache.
+ * xstormy16-tdep.c (xstormy16_frame_prev_register): Use get_frame_arch
+ to get at the current architecture by frame_info.
+ * fbsd-nat.c (fbsd_make_corefile_notes): Use get_regcache_arch to get
+ at the current architecture by regcache.
+ * gnu-v3-abi.c (gnuv3_skip_trampoline): Use get_frame_arch to get at
+ the current architecture by frame_info.
+ (build_gdb_vtable_type): Replace current_gdbarch by gdbarch.
+ * aix-thread.c (special_register_p): Add gdbarch as parameter.
+ (fetch_regs_kernel_thread, store_regs_kernel_thread): Add gdbarch to
+ caller of special_register_p.
+
2007-11-07 Markus Deuling <deuling@de.ibm.com>
* infcall.c (call_function_by_hand): Use get_frame_arch to get at the
/* Predicate to test whether given register number is a "special" register. */
static int
-special_register_p (int regno)
+special_register_p (struct gdbarch *gdbarch, int regno)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- return regno == gdbarch_pc_regnum (current_gdbarch)
+ return regno == gdbarch_pc_regnum (gdbarch)
|| regno == tdep->ppc_ps_regnum
|| regno == tdep->ppc_cr_regnum
|| regno == tdep->ppc_lr_regnum
/* Special-purpose registers. */
- if (regno == -1 || special_register_p (regno))
+ if (regno == -1 || special_register_p (gdbarch, regno))
{
if (arch64)
{
/* Special-purpose registers. */
- if (regno == -1 || special_register_p (regno))
+ if (regno == -1 || special_register_p (gdbarch, regno))
{
if (arch64)
{
char *
fbsd_make_corefile_notes (bfd *obfd, int *note_size)
{
- struct gdbarch *gdbarch = current_gdbarch;
const struct regcache *regcache = get_current_regcache ();
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
gregset_t gregs;
fpregset_t fpregs;
char *note_data = NULL;
described above, laid out appropriately for ARCH.
We use this function as the gdbarch per-architecture data
- initialization function. We assume that the gdbarch framework
- calls the per-architecture data initialization functions after it
- sets current_gdbarch to the new architecture. */
+ initialization function. */
static void *
build_gdb_vtable_type (struct gdbarch *arch)
{
/* ARCH can't give us the true ptrdiff_t type, so we guess. */
struct type *ptrdiff_type
= init_type (TYPE_CODE_INT,
- gdbarch_ptr_bit (current_gdbarch) / TARGET_CHAR_BIT, 0,
+ gdbarch_ptr_bit (arch) / TARGET_CHAR_BIT, 0,
"ptrdiff_t", 0);
/* We assume no padding is necessary, since GDB doesn't know
gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc)
{
CORE_ADDR real_stop_pc, method_stop_pc;
+ struct gdbarch *gdbarch = get_frame_arch (frame);
struct minimal_symbol *thunk_sym, *fn_sym;
struct obj_section *section;
char *thunk_name, *fn_name;
- real_stop_pc = gdbarch_skip_trampoline_code
- (current_gdbarch, frame, stop_pc);
+ real_stop_pc = gdbarch_skip_trampoline_code (gdbarch, frame, stop_pc);
if (real_stop_pc == 0)
real_stop_pc = stop_pc;
method_stop_pc = SYMBOL_VALUE_ADDRESS (fn_sym);
real_stop_pc = gdbarch_skip_trampoline_code
- (current_gdbarch, frame, method_stop_pc);
+ (gdbarch, frame, method_stop_pc);
if (real_stop_pc == 0)
real_stop_pc = method_stop_pc;
struct regcache *regcache,
int regnum, const void *gregs, size_t len)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
const gdb_byte *regs = gregs;
int i;
gdb_assert (len >= SHNBSD_SIZEOF_GREGS);
- if (regnum == gdbarch_pc_regnum (current_gdbarch) || regnum == -1)
- regcache_raw_supply (regcache,
- gdbarch_pc_regnum (current_gdbarch),
+ if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1)
+ regcache_raw_supply (regcache, gdbarch_pc_regnum (gdbarch),
regs + (0 * 4));
if (regnum == SR_REGNUM || regnum == -1)
const struct regcache *regcache,
int regnum, void *gregs, size_t len)
{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
gdb_byte *regs = gregs;
int i;
gdb_assert (len >= SHNBSD_SIZEOF_GREGS);
- if (regnum == gdbarch_pc_regnum (current_gdbarch) || regnum == -1)
- regcache_raw_collect (regcache, gdbarch_pc_regnum (current_gdbarch),
+ if (regnum == gdbarch_pc_regnum (gdbarch) || regnum == -1)
+ regcache_raw_collect (regcache, gdbarch_pc_regnum (gdbarch),
regs + (0 * 4));
if (regnum == SR_REGNUM || regnum == -1)
{
/* Read the value in from memory. */
read_memory (*addrp, valuep,
- register_size (current_gdbarch, regnum));
+ register_size (get_frame_arch (next_frame), regnum));
}
return;
}