diff options
-rw-r--r-- | recipes/eglibc/eglibc_2.10.bb | 3 | ||||
-rw-r--r-- | recipes/eglibc/eglibc_2.9.bb | 3 | ||||
-rw-r--r-- | recipes/eglibc/eglibc_svn.bb | 1 | ||||
-rw-r--r-- | recipes/eglibc/files/armv4t-interworking.patch | 53 |
4 files changed, 58 insertions, 2 deletions
diff --git a/recipes/eglibc/eglibc_2.10.bb b/recipes/eglibc/eglibc_2.10.bb index d15bd61268..1bd3d6e5da 100644 --- a/recipes/eglibc/eglibc_2.10.bb +++ b/recipes/eglibc/eglibc_2.10.bb @@ -3,11 +3,12 @@ require eglibc.inc DEPENDS += "gperf-native" FILESPATHPKG =. "eglibc-svn:" PV = "2.10" -PR = "${INC_PR}.2" +PR = "${INC_PR}.3" SVN_REV="9124" EGLIBC_BRANCH="eglibc-2_10" SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_10;rev=${SVN_REV};proto=svn \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ + file://armv4t-interworking.patch;patch=1 \ file://etc/ld.so.conf \ file://generate-supported.mk" S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" diff --git a/recipes/eglibc/eglibc_2.9.bb b/recipes/eglibc/eglibc_2.9.bb index bc1b04133f..6b27745f65 100644 --- a/recipes/eglibc/eglibc_2.9.bb +++ b/recipes/eglibc/eglibc_2.9.bb @@ -3,11 +3,12 @@ require eglibc.inc DEPENDS += "gperf-native" FILESPATHPKG =. "eglibc-svn:" PV = "2.9" -PR = "${INC_PR}.3" +PR = "${INC_PR}.4" SVN_REV="8690" EGLIBC_BRANCH="eglibc-2_9" SRC_URI = "svn://svn.eglibc.org/branches;module=eglibc-2_9;rev=${SVN_REV};proto=svn \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ + file://armv4t-interworking.patch;patch=1 \ file://etc/ld.so.conf \ file://generate-supported.mk" S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" diff --git a/recipes/eglibc/eglibc_svn.bb b/recipes/eglibc/eglibc_svn.bb index f652c61b96..1988350e6b 100644 --- a/recipes/eglibc/eglibc_svn.bb +++ b/recipes/eglibc/eglibc_svn.bb @@ -9,6 +9,7 @@ PR = "${INC_PR}.1" EGLIBC_BRANCH="trunk" SRC_URI = "svn://svn.eglibc.org;module=trunk \ file://eglibc-svn-arm-lowlevellock-include-tls.patch;patch=1 \ + file://armv4t-interworking.patch;patch=1 \ file://etc/ld.so.conf \ file://generate-supported.mk" S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" diff --git a/recipes/eglibc/files/armv4t-interworking.patch b/recipes/eglibc/files/armv4t-interworking.patch new file mode 100644 index 0000000000..55ee8565d7 --- /dev/null +++ b/recipes/eglibc/files/armv4t-interworking.patch @@ -0,0 +1,53 @@ +Index: libc/ports/sysdeps/arm/memcpy.S +=================================================================== +--- libc.orig/ports/sysdeps/arm/memcpy.S 2009-09-03 16:12:00.000000000 -0700 ++++ libc/ports/sysdeps/arm/memcpy.S 2009-10-28 12:51:22.000000000 -0700 +@@ -130,7 +130,12 @@ ENTRY(memcpy) + strcsb r4, [r0], #1 + strcsb ip, [r0] + ++#if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) ++ ldmfd sp!, {r0, r4, lr} ++ bx lr ++#else + ldmfd sp!, {r0, r4, pc} ++#endif + + 9: rsb ip, ip, #4 + cmp ip, #2 +Index: libc/ports/sysdeps/arm/memmove.S +=================================================================== +--- libc.orig/ports/sysdeps/arm/memmove.S 2009-09-03 16:12:00.000000000 -0700 ++++ libc/ports/sysdeps/arm/memmove.S 2009-10-28 12:51:22.000000000 -0700 +@@ -144,7 +144,12 @@ ENTRY(memmove) + strneb r3, [r0, #-1]! + strcsb r4, [r0, #-1]! + strcsb ip, [r0, #-1] ++#if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__) ++ ldmfd sp!, {r0, r4, lr} ++ bx lr ++#else + ldmfd sp!, {r0, r4, pc} ++#endif + + 9: cmp ip, #2 + ldrgtb r3, [r1, #-1]! +Index: libc/ports/sysdeps/unix/sysv/linux/arm/clone.S +=================================================================== +--- libc.orig/ports/sysdeps/unix/sysv/linux/arm/clone.S 2009-09-03 16:12:04.000000000 -0700 ++++ libc/ports/sysdeps/unix/sysv/linux/arm/clone.S 2009-10-28 12:51:22.000000000 -0700 +@@ -96,8 +96,14 @@ ENTRY(__clone) + #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__) ++ ldr ip, [sp], #8 ++ mov lr, pc ++ bx ip ++#else + mov lr, pc + ldr pc, [sp], #8 ++#endif + + @ and we are done, passing the return value through r0 + b PLTJMP(HIDDEN_JUMPTARGET(_exit)) |