X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Falphanbsd-tdep.c;h=d0d85ac907bdf066ce8e0b2f4f9287d7a9b236a8;hb=37cc8bfee6166ea05f1fa2e7d9f0f4d90663b7fc;hp=c85753b1217c661e597b16f87ba4d5d130731fbd;hpb=effa26a936e3b81667b6a0fa18354a718734d5f1;p=binutils-gdb.git diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c index c85753b1217..d0d85ac907b 100644 --- a/gdb/alphanbsd-tdep.c +++ b/gdb/alphanbsd-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for NetBSD/alpha. - Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008 + Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Wasabi Systems, Inc. @@ -211,7 +211,7 @@ static const unsigned char sigtramp_retcode[] = #define RETCODE_SIZE (RETCODE_NWORDS * 4) static LONGEST -alphanbsd_sigtramp_offset (CORE_ADDR pc) +alphanbsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc) { unsigned char ret[RETCODE_SIZE], w[4]; LONGEST off; @@ -241,10 +241,11 @@ alphanbsd_sigtramp_offset (CORE_ADDR pc) } static int -alphanbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +alphanbsd_pc_in_sigtramp (struct gdbarch *gdbarch, + CORE_ADDR pc, char *func_name) { return (nbsd_pc_in_sigtramp (pc, func_name) - || alphanbsd_sigtramp_offset (pc) >= 0); + || alphanbsd_sigtramp_offset (gdbarch, pc) >= 0); } static CORE_ADDR @@ -253,7 +254,9 @@ alphanbsd_sigcontext_addr (struct frame_info *frame) /* FIXME: This is not correct for all versions of NetBSD/alpha. We will probably need to disassemble the trampoline to figure out which trampoline frame type we have. */ - return get_frame_base (frame); + if (!get_next_frame (frame)) + return 0; + return get_frame_base (get_next_frame (frame)); }