summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc32/dl-start.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc32/dl-start.S')
-rw-r--r--sysdeps/powerpc/powerpc32/dl-start.S7
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc32/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S
index d72202d4a4..e1f7f6e24a 100644
--- a/sysdeps/powerpc/powerpc32/dl-start.S
+++ b/sysdeps/powerpc/powerpc32/dl-start.S
@@ -47,8 +47,15 @@ ENTRY(_dl_start_user)
passed by value!). */
/* Put our GOT pointer in r31, */
+#ifdef HAVE_ASM_PPC_REL16
+ bcl 20,31,1f
+1: mflr r31
+ addis r31,r31,_GLOBAL_OFFSET_TABLE_-1b@ha
+ addi r31,r31,_GLOBAL_OFFSET_TABLE_-1b@l
+#else
bl _GLOBAL_OFFSET_TABLE_-4@local
mflr r31
+#endif
/* the address of _start in r30, */
mr r30,r3
/* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */