From: Will Newton Date: Thu, 23 Jan 2014 11:11:24 +0000 (+0000) Subject: ARM: Fix clone build for ARMv4 X-Git-Tag: glibc-2.19~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47590bce28616abbcee93457da91d65a7a07589b;p=thirdparty%2Fglibc.git ARM: Fix clone build for ARMv4 ARMv4 does not have the blx instruction, so use the BLX macro which handles abstracting this for us. Build tested for armv7, armv4t and armv4. ports/ChangeLog.arm: 2014-01-24 Will Newton [BZ #16499] * sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead of blx instruction directly. --- diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index 4371b3ccfb5..51bb76b992e 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,9 @@ +2014-01-24 Will Newton + + [BZ #16499] + * sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead + of blx instruction directly. + 2014-01-14 Will Newton * sysdeps/arm/__longjmp.S: Don't apply pointer encryption diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S index 44286a5cd0b..03fe9ab7284 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/clone.S +++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S @@ -88,14 +88,8 @@ PSEUDO_END (__clone) #endif @ pick the function arg and call address off the stack and execute ldr r0, [sp, #4] -#if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) ldr ip, [sp], #8 - mov lr, pc - bx ip -#else - ldr lr, [sp], #8 - blx lr -#endif + BLX (ip) @ and we are done, passing the return value through r0 b PLTJMP(HIDDEN_JUMPTARGET(_exit))