diff options
Diffstat (limited to 'gdb/alphaobsd-tdep.c')
-rw-r--r-- | gdb/alphaobsd-tdep.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gdb/alphaobsd-tdep.c b/gdb/alphaobsd-tdep.c index 72b0695..895eb5b 100644 --- a/gdb/alphaobsd-tdep.c +++ b/gdb/alphaobsd-tdep.c @@ -40,13 +40,14 @@ static const int alphaobsd_page_size = 8192; static LONGEST -alphaobsd_sigtramp_offset (CORE_ADDR pc) +alphaobsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc) { return (pc & (alphaobsd_page_size - 1)); } static int -alphaobsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +alphaobsd_pc_in_sigtramp (struct gdbarch *gdbarch, + CORE_ADDR pc, char *name) { CORE_ADDR start_pc = (pc & ~(alphaobsd_page_size - 1)); unsigned insn; @@ -55,12 +56,12 @@ alphaobsd_pc_in_sigtramp (CORE_ADDR pc, char *name) return 0; /* Check for "". */ - insn = alpha_read_insn (start_pc + 5 * ALPHA_INSN_SIZE); + insn = alpha_read_insn (gdbarch, start_pc + 5 * ALPHA_INSN_SIZE); if (insn != 0x201f0067) return 0; /* Check for "". */ - insn = alpha_read_insn (start_pc + 6 * ALPHA_INSN_SIZE); + insn = alpha_read_insn (gdbarch, start_pc + 6 * ALPHA_INSN_SIZE); if (insn != 0x00000083) return 0; @@ -70,14 +71,15 @@ alphaobsd_pc_in_sigtramp (CORE_ADDR pc, char *name) static CORE_ADDR alphaobsd_sigcontext_addr (struct frame_info *this_frame) { + struct gdbarch *gdbarch = get_frame_arch (this_frame); CORE_ADDR pc = get_frame_pc (this_frame); - if (alphaobsd_sigtramp_offset (pc) < 3 * ALPHA_INSN_SIZE) + if (alphaobsd_sigtramp_offset (gdbarch, pc) < 3 * ALPHA_INSN_SIZE) { /* On entry, a pointer the `struct sigcontext' is passed in %a2. */ return get_frame_register_unsigned (this_frame, ALPHA_A0_REGNUM + 2); } - else if (alphaobsd_sigtramp_offset (pc) < 4 * ALPHA_INSN_SIZE) + else if (alphaobsd_sigtramp_offset (gdbarch, pc) < 4 * ALPHA_INSN_SIZE) { /* It is stored on the stack Before calling the signal handler. */ CORE_ADDR sp; |