diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2009-11-04 10:03:22 +0100 |
---|---|---|
committer | Phil Blundell <philb@gnu.org> | 2009-11-04 14:17:41 +0000 |
commit | 8fedaafb39b5664ea964e8aabf2c22795e4fff3c (patch) | |
tree | 2c70ea8c4d20de4d791b8f3f6460e5503c973353 | |
parent | 0f926962a23b68e69da9dc6617c754573cbc42d7 (diff) |
eglibc: updated armv4t-interworking.patch
* Updated patch to make SYSCALL_ERROR_HANDLER interworking safe.
* Phil Blundell found and fixed another issue in eglibc armv4t builds.
Signed-off-by: Martin.Jansa <Martin.Jansa@gmail.com>
-rw-r--r-- | recipes/eglibc/eglibc_2.10.bb | 2 | ||||
-rw-r--r-- | recipes/eglibc/eglibc_2.9.bb | 2 | ||||
-rw-r--r-- | recipes/eglibc/eglibc_svn.bb | 2 | ||||
-rw-r--r-- | recipes/eglibc/files/armv4t-interworking.patch | 27 |
4 files changed, 29 insertions, 4 deletions
diff --git a/recipes/eglibc/eglibc_2.10.bb b/recipes/eglibc/eglibc_2.10.bb index d143b0ad0c..2a62fe3828 100644 --- a/recipes/eglibc/eglibc_2.10.bb +++ b/recipes/eglibc/eglibc_2.10.bb @@ -3,7 +3,7 @@ require eglibc.inc DEPENDS += "gperf-native" FILESPATHPKG =. "eglibc-svn:" PV = "2.10" -PR = "${INC_PR}.4" +PR = "${INC_PR}.5" SVN_REV="9124" EGLIBC_BRANCH="eglibc-2_10" SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_10;rev=${SVN_REV};proto=svn \ diff --git a/recipes/eglibc/eglibc_2.9.bb b/recipes/eglibc/eglibc_2.9.bb index 3efcb36d37..7a8262783e 100644 --- a/recipes/eglibc/eglibc_2.9.bb +++ b/recipes/eglibc/eglibc_2.9.bb @@ -3,7 +3,7 @@ require eglibc.inc DEPENDS += "gperf-native" FILESPATHPKG =. "eglibc-svn:" PV = "2.9" -PR = "${INC_PR}.5" +PR = "${INC_PR}.6" SVN_REV="8690" EGLIBC_BRANCH="eglibc-2_9" SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_9;rev=${SVN_REV};proto=svn \ diff --git a/recipes/eglibc/eglibc_svn.bb b/recipes/eglibc/eglibc_svn.bb index 1a91af88d8..3376839040 100644 --- a/recipes/eglibc/eglibc_svn.bb +++ b/recipes/eglibc/eglibc_svn.bb @@ -5,7 +5,7 @@ SRCREV = "9170" DEFAULT_PREFERENCE = "-1" FILESPATHPKG =. "eglibc-svn:" PV = "2.10+svnr${SRCREV}" -PR = "${INC_PR}.1" +PR = "${INC_PR}.2" EGLIBC_BRANCH="trunk" SRC_URI = "svn://svn.eglibc.org;module=trunk \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ diff --git a/recipes/eglibc/files/armv4t-interworking.patch b/recipes/eglibc/files/armv4t-interworking.patch index 55ee8565d7..6ab306180c 100644 --- a/recipes/eglibc/files/armv4t-interworking.patch +++ b/recipes/eglibc/files/armv4t-interworking.patch @@ -40,7 +40,7 @@ Index: libc/ports/sysdeps/unix/sysv/linux/arm/clone.S #endif @ pick the function arg and call address off the stack and execute ldr r0, [sp, #4] -+#if defined(__ARM_ARCH_V4T__) && defined(__THUMB_INTERWORK__) ++#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) + ldr ip, [sp], #8 + mov lr, pc + bx ip @@ -51,3 +51,28 @@ Index: libc/ports/sysdeps/unix/sysv/linux/arm/clone.S @ and we are done, passing the return value through r0 b PLTJMP(HIDDEN_JUMPTARGET(_exit)) +Index: libc/ports/sysdeps/unix/sysv/linux/arm/sysdep.h +=================================================================== +--- libc.orig/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2009-09-16 13:58:18.000000000 +0100 ++++ libc/ports/sysdeps/unix/sysv/linux/arm/sysdep.h 2009-11-03 19:17:16.000000000 +0000 +@@ -129,6 +129,11 @@ + DO_RET(lr); \ + 1: .word C_SYMBOL_NAME(rtld_errno) - 0b - 8; + # else ++#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) ++#define POP_PC ldr lr, [sp], #4; bx lr ++#else ++#define POP_PC ldr pc, [sp], #4 ++#endif + # define SYSCALL_ERROR_HANDLER \ + __local_syscall_error: \ + str lr, [sp, #-4]!; \ +@@ -138,7 +143,7 @@ + rsb r1, r1, #0; \ + str r1, [r0]; \ + mvn r0, #0; \ +- ldr pc, [sp], #4; ++ POP_PC; + # endif + #else + # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ |