eglibc: Forward port armv4t-interworking patch
authorKhem Raj <raj.khem@gmail.com>
Wed, 28 Oct 2009 20:06:13 +0000 (13:06 -0700)
committerKhem Raj <raj.khem@gmail.com>
Wed, 28 Oct 2009 20:07:02 +0000 (13:07 -0700)
* This patch is needed to support armv4t targets.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
recipes/eglibc/eglibc_2.10.bb
recipes/eglibc/eglibc_2.9.bb
recipes/eglibc/eglibc_svn.bb
recipes/eglibc/files/armv4t-interworking.patch [new file with mode: 0644]

index d15bd61..1bd3d6e 100644 (file)
@@ -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"
index bc1b041..6b27745 100644 (file)
@@ -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"
index f652c61..1988350 100644 (file)
@@ -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 (file)
index 0000000..55ee856
--- /dev/null
@@ -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))