From 9ce2de577fd3d1089104e69eccea1c4a4a2824cf Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Thu, 24 May 2007 02:56:59 +0000 Subject: Fix ARM EABI signal unwinding to accomodate signal frame layout between Linux kernel versions as reported by Joseph S. Myers on the mailing list. More information available at . --- libc/sysdeps/linux/arm/sigrestorer.S | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'libc/sysdeps/linux/arm/sigrestorer.S') diff --git a/libc/sysdeps/linux/arm/sigrestorer.S b/libc/sysdeps/linux/arm/sigrestorer.S index 5b996ea83..daa614f46 100644 --- a/libc/sysdeps/linux/arm/sigrestorer.S +++ b/libc/sysdeps/linux/arm/sigrestorer.S @@ -17,7 +17,8 @@ 02111-1307 USA. */ #include - +#include + /* If no SA_RESTORER function was specified by the application we use one of these. This avoids the need for the kernel to synthesise a return instruction on the stack, which would involve expensive cache flushes. @@ -29,7 +30,9 @@ Start the unwind tables at least one instruction before the signal trampoline, because the unwinder will assume we are returning after - a call site. */ + a call site. + + The signal frame layout changed in 2.6.18. */ .global __default_sa_restorer .type __default_sa_restorer,%function @@ -37,7 +40,11 @@ #ifdef __ARM_EABI__ .fnstart .save {r0-r15} +#if LINUX_VERSION_CODE >= 0x020612 + .pad #32 +#else .pad #12 +#endif nop __default_sa_restorer: mov r7, $SYS_ify(sigreturn) @@ -57,7 +64,11 @@ __default_sa_restorer: #ifdef __ARM_EABI__ .fnstart .save {r0-r15} +#if LINUX_VERSION_CODE >= 0x020612 + .pad #160 +#else .pad #168 +#endif nop __default_rt_sa_restorer: mov r7, $SYS_ify(rt_sigreturn) -- cgit v1.2.3