This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
Community source repository for glibc add-on ports branch, master, updated. glibc-2.10.1-22-g53df8bc
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 6 Aug 2009 16:53:39 -0000
- Subject: Community source repository for glibc add-on ports branch, master, updated. glibc-2.10.1-22-g53df8bc
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Community source repository for glibc add-on ports".
The branch, master has been updated
via 53df8bcec0cc4a07dcb0d13f9105a9002d9183d8 (commit)
from c67273d5b28317c87d2e9ee636ead6d71635e0e5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc-ports.git;a=commitdiff;h=53df8bcec0cc4a07dcb0d13f9105a9002d9183d8
commit 53df8bcec0cc4a07dcb0d13f9105a9002d9183d8
Author: Joseph Myers <joseph@codesourcery.com>
Date: Thu Aug 6 16:53:09 2009 +0000
Add alternate signal stack support to ARM ____longjmp_chk.
* sysdeps/arm/____longjmp_chk.S: Remove. Replaced by....
* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S,
sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S: This. New
files.
* sysdeps/arm/__longjmp.S, sysdeps/arm/eabi/__longjmp.S: Use r4
for saved sp.
diff --git a/ChangeLog.arm b/ChangeLog.arm
index fe87809..9df8b0f 100644
--- a/ChangeLog.arm
+++ b/ChangeLog.arm
@@ -1,3 +1,12 @@
+2009-08-06 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/arm/____longjmp_chk.S: Remove. Replaced by....
+ * sysdeps/unix/sysv/linux/arm/____longjmp_chk.S,
+ sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S: This. New
+ files.
+ * sysdeps/arm/__longjmp.S, sysdeps/arm/eabi/__longjmp.S: Use r4
+ for saved sp.
+
2009-07-29 Aurelien Jarno <aurelien@aurel32.net>
* sysdeps/unix/sysv/linux/arm/kernel-features.h: Define
diff --git a/sysdeps/arm/__longjmp.S b/sysdeps/arm/__longjmp.S
index c834e78..09e6386 100644
--- a/sysdeps/arm/__longjmp.S
+++ b/sysdeps/arm/__longjmp.S
@@ -30,8 +30,8 @@ ENTRY (__longjmp)
moveq r0, #1 /* can't let setjmp() return zero! */
#ifdef CHECK_SP
- ldr r1, [ip, #32]
- CHECK_SP (r1)
+ ldr r4, [ip, #32]
+ CHECK_SP (r4)
#endif
LOADREGS(ia, ip, {v1-v6, sl, fp, sp, pc})
END (__longjmp)
diff --git a/sysdeps/arm/eabi/__longjmp.S b/sysdeps/arm/eabi/__longjmp.S
index 1f3f791..f283297 100644
--- a/sysdeps/arm/eabi/__longjmp.S
+++ b/sysdeps/arm/eabi/__longjmp.S
@@ -31,8 +31,8 @@ ENTRY (__longjmp)
moveq r0, #1 /* can't let setjmp() return zero! */
#ifdef CHECK_SP
- ldr r1, [ip, #32]
- CHECK_SP (r1)
+ ldr r4, [ip, #32]
+ CHECK_SP (r4)
#endif
LOADREGS(ia, ip!, {v1-v6, sl, fp, sp, lr})
diff --git a/sysdeps/arm/____longjmp_chk.S b/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
similarity index 79%
copy from sysdeps/arm/____longjmp_chk.S
copy to sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
index 16fc4cd..2fa727d 100644
--- a/sysdeps/arm/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
@@ -16,6 +16,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
+#include <sysdep.h>
.section .rodata.str1.1,"aMS",%progbits,1
.type longjmp_msg,%object
@@ -47,9 +48,28 @@ longjmp_msg:
#endif
#define CHECK_SP(reg) \
- cmp sp, reg; \
+ cmp sp, reg; \
bls .Lok; \
+ mov r5, r0; \
+ mov r0, #0; \
+ sub sp, sp, #16; \
+ mov r1, sp; \
+ swi #SYS_ify(sigaltstack); \
+ cmp r0, #0; \
+ bne .Lok2; \
+ ldr r1, [sp, #4]; \
+ tst r1, #1; \
+ beq .Lfail; \
+ ldr r2, [sp, #0]; \
+ ldr r3, [sp, #8]; \
+ add r2, r2, r3; \
+ sub r2, r2, reg; \
+ cmp r2, r3; \
+ bhi .Lok2; \
+.Lfail: \
CALL_FAIL \
+.Lok2: \
+ mov r0, r5; \
.Lok:
#include <__longjmp.S>
diff --git a/sysdeps/arm/____longjmp_chk.S b/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S
similarity index 78%
rename from sysdeps/arm/____longjmp_chk.S
rename to sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S
index 16fc4cd..f92a382 100644
--- a/sysdeps/arm/____longjmp_chk.S
+++ b/sysdeps/unix/sysv/linux/arm/eabi/____longjmp_chk.S
@@ -16,6 +16,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
+#include <sysdep.h>
.section .rodata.str1.1,"aMS",%progbits,1
.type longjmp_msg,%object
@@ -47,9 +48,29 @@ longjmp_msg:
#endif
#define CHECK_SP(reg) \
- cmp sp, reg; \
+ cmp sp, reg; \
bls .Lok; \
+ mov r5, r0; \
+ mov r7, #SYS_ify(sigaltstack); \
+ mov r0, #0; \
+ sub sp, sp, #16; \
+ mov r1, sp; \
+ swi #0; \
+ cmp r0, #0; \
+ bne .Lok2; \
+ ldr r1, [sp, #4]; \
+ tst r1, #1; \
+ beq .Lfail; \
+ ldr r2, [sp, #0]; \
+ ldr r3, [sp, #8]; \
+ add r2, r2, r3; \
+ sub r2, r2, reg; \
+ cmp r2, r3; \
+ bhi .Lok2; \
+.Lfail: \
CALL_FAIL \
+.Lok2: \
+ mov r0, r5; \
.Lok:
#include <__longjmp.S>
-----------------------------------------------------------------------
Summary of changes:
ChangeLog.arm | 9 +++++++
sysdeps/arm/__longjmp.S | 4 +-
sysdeps/arm/eabi/__longjmp.S | 4 +-
.../{ => unix/sysv/linux}/arm/____longjmp_chk.S | 22 ++++++++++++++++++-
.../sysv/linux/arm/eabi}/____longjmp_chk.S | 23 +++++++++++++++++++-
5 files changed, 56 insertions(+), 6 deletions(-)
copy sysdeps/{ => unix/sysv/linux}/arm/____longjmp_chk.S (79%)
rename sysdeps/{arm => unix/sysv/linux/arm/eabi}/____longjmp_chk.S (78%)
hooks/post-receive
--
Community source repository for glibc add-on ports