From: Markus Deuling Date: Wed, 7 Nov 2007 06:53:41 +0000 (+0000) Subject: 2007-11-07 Markus Deuling X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9970f04b039f5b71319c17f15231b15d23bed38a;p=binutils-gdb.git 2007-11-07 Markus Deuling * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3e169d005c0..8049d36374d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,18 @@ +2007-11-07 Markus Deuling + + * 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 * infcall.c (call_function_by_hand): Use get_frame_arch to get at the diff --git a/gdb/aix-thread.c b/gdb/aix-thread.c index a941ea7d63d..794e7db0c0c 100644 --- a/gdb/aix-thread.c +++ b/gdb/aix-thread.c @@ -1060,11 +1060,11 @@ supply_fprs (struct regcache *regcache, double *vals) /* 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 @@ -1237,7 +1237,7 @@ fetch_regs_kernel_thread (struct regcache *regcache, int regno, /* Special-purpose registers. */ - if (regno == -1 || special_register_p (regno)) + if (regno == -1 || special_register_p (gdbarch, regno)) { if (arch64) { @@ -1554,7 +1554,7 @@ store_regs_kernel_thread (const struct regcache *regcache, int regno, /* Special-purpose registers. */ - if (regno == -1 || special_register_p (regno)) + if (regno == -1 || special_register_p (gdbarch, regno)) { if (arch64) { diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index 75775ecc039..2caf9bb57ef 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -143,8 +143,8 @@ fbsd_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, 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; diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index c3e07a10675..a76db90874a 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -98,9 +98,7 @@ enum { 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) { @@ -116,7 +114,7 @@ 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 @@ -680,12 +678,12 @@ static CORE_ADDR 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; @@ -709,7 +707,7 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR 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; diff --git a/gdb/shnbsd-tdep.c b/gdb/shnbsd-tdep.c index 8fbb950700d..d0be64b4fbf 100644 --- a/gdb/shnbsd-tdep.c +++ b/gdb/shnbsd-tdep.c @@ -67,14 +67,14 @@ shnbsd_supply_gregset (const struct regset *regset, 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) @@ -106,13 +106,14 @@ shnbsd_collect_gregset (const struct regset *regset, 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) diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c index 42d854605d3..21d9cc3712a 100644 --- a/gdb/xstormy16-tdep.c +++ b/gdb/xstormy16-tdep.c @@ -706,7 +706,7 @@ xstormy16_frame_prev_register (struct frame_info *next_frame, { /* Read the value in from memory. */ read_memory (*addrp, valuep, - register_size (current_gdbarch, regnum)); + register_size (get_frame_arch (next_frame), regnum)); } return; }