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.guene(a)st.com>
Signed-off-by: Christophe Lyon <christophe.lyon(a)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