2009-12-15 Tristan Gingold <gingold@adacore.com>
[deliverable/binutils-gdb.git] / gdb / alphanbsd-tdep.c
index c85753b1217c661e597b16f87ba4d5d130731fbd..11179c25c4f2837586da4d51e8a589e03d9c9c5f 100644 (file)
@@ -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
    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));
 }
 \f
 
This page took 0.024619 seconds and 4 git commands to generate.