From 2c0b250ae4bc8f14a7c5a5e733d57de6c6745d9c Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Tue, 23 Aug 2011 23:17:52 -0700 Subject: Fix jmpbuf unwind checks on sparc64. --- sysdeps/sparc/sparc64/dl-machine.h | 4 ++-- sysdeps/sparc/sparc64/jmpbuf-unwind.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'sysdeps/sparc') diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index aaa22d6540..3f71a66774 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -264,9 +264,9 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) #define elf_machine_relplt elf_machine_rela /* Undo the sub %sp, 6*8, %sp; add %sp, STACK_BIAS + 22*8, %o0 below - to get at the value we want in __libc_stack_end. */ + (but w/o STACK_BIAS) to get at the value we want in __libc_stack_end. */ #define DL_STACK_END(cookie) \ - ((void *) (((long) (cookie)) - (22 - 6) * 8 - STACK_BIAS)) + ((void *) (((long) (cookie)) - (22 - 6) * 8)) /* Initial entry point code for the dynamic linker. The C function `_dl_start' is the real entry point; diff --git a/sysdeps/sparc/sparc64/jmpbuf-unwind.h b/sysdeps/sparc/sparc64/jmpbuf-unwind.h index f7eed15ea1..f19b6498f2 100644 --- a/sysdeps/sparc/sparc64/jmpbuf-unwind.h +++ b/sysdeps/sparc/sparc64/jmpbuf-unwind.h @@ -24,14 +24,14 @@ /* Test if longjmp to JMPBUF would unwind the frame containing a local variable at ADDRESS. */ #define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ - ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp + 2047) + ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_gregs[MC_O6] + 2047) #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) \ - < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_fp + 2047 - (_adj)) + < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_gregs[MC_O6] + 2047 - (_adj)) /* We use the normal lobngjmp for unwinding. */ #define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) -- cgit 1.4.1