X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Falphaobsd-tdep.c;h=9bfd7578e6ffdc1ae8125d89cdb0d8cee105b568;hb=7d266584031b069cc16e33071c064cc65a555218;hp=72b06954466949edd40a185876c824944b243ed4;hpb=0fb0cc7590113e9b459dfcc48dc71c9d419d9580;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/alphaobsd-tdep.c b/gdb/alphaobsd-tdep.c index 72b0695446..9bfd7578e6 100644 --- a/gdb/alphaobsd-tdep.c +++ b/gdb/alphaobsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for OpenBSD/alpha. - Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2006-2013 Free Software Foundation, Inc. This file is part of GDB. @@ -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, const 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;