Change clone.S so that in FDPIC case we take into account the fact
that we are given a function descriptor.

        * libc/sysdeps/linux/arm/clone.S (__clone): Support __FDPIC__.

Signed-off-by: Mickaël Guêné <mickael.gu...@st.com>
Signed-off-by: Christophe Lyon <christophe.l...@st.com>

diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
index 8ca50fc..eacf3db 100644
--- a/libc/sysdeps/linux/arm/clone.S
+++ b/libc/sysdeps/linux/arm/clone.S
@@ -130,8 +130,20 @@ PSEUDO_END (__clone)
        .cantunwind
        @ pick the function arg and call address off the stack and execute
        ldr     r0, [sp, #4]
+#if defined(__FDPIC__)
+       ldr     r12, [sp]
+       mov     r4, r9
+       ldr     r9, [r12, #4]
+       mov     lr, pc
+       ldr     pc, [r12]
+#else
        mov     lr, pc
        ldr     pc, [sp]
+#endif
+
+#if defined(__FDPIC__)
+       mov     r9, r4
+#endif
 
        @ and we are done, passing the return value through r0
        b       HIDDEN_JUMPTARGET(_exit)
-- 
2.6.3

_______________________________________________
devel mailing list
devel@uclibc-ng.org
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to