aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-linux-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sparc-linux-tdep.c')
-rw-r--r--gdb/sparc-linux-tdep.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/gdb/sparc-linux-tdep.c b/gdb/sparc-linux-tdep.c
index 36c0565..db40365 100644
--- a/gdb/sparc-linux-tdep.c
+++ b/gdb/sparc-linux-tdep.c
@@ -144,16 +144,17 @@ sparc32_linux_sigtramp_p (struct frame_info *next_frame)
find_pc_partial_function (pc, &name, NULL, NULL);
/* If we have NAME, we can optimize the search. The trampolines are
- named __restore and __restore_rt. However, they aren't dynamically
- exported from the shared C library, so the trampoline may appear to
- be part of the preceding function. This should always be sigaction,
- __sigaction, or __libc_sigaction (all aliases to the same function). */
+ named __sigreturn_stub and __rt_sigreturn_stub. However, they
+ aren't dynamically exported from the shared C library, so the
+ trampoline may appear to be part of the preceding function. This
+ should always be sigaction, __sigaction, or __libc_sigaction (all
+ aliases to the same function). */
if (name == NULL || strstr (name, "sigaction") != NULL)
return (sparc32_linux_sigtramp_start (next_frame) != 0
|| sparc32_linux_rt_sigtramp_start (next_frame) != 0);
- return (strcmp ("__restore", name) == 0
- || strcmp ("__restore_rt", name) == 0);
+ return (strcmp ("__sigreturn_stub", name) == 0
+ || strcmp ("__rt_sigreturn_stub", name) == 0);
}
static struct sparc_frame_cache *
@@ -192,6 +193,8 @@ sparc32_linux_sigtramp_frame_cache (struct frame_info *next_frame,
cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
+ /* Offsets from <bits/sigcontext.h> */
+
cache->saved_regs[SPARC32_PSR_REGNUM].addr = sigcontext_addr + 0;
cache->saved_regs[SPARC32_PC_REGNUM].addr = sigcontext_addr + 4;
cache->saved_regs[SPARC32_NPC_REGNUM].addr = sigcontext_addr + 8;