From: Cupertino Miranda <cmiranda(a)synopsys.com>
crt1.S needed to use a got relative reference.
Libraries like pthreads define a _init and unless it is GOT, the
linker will fail because it will try to create a dynamic reloc on
.text section, more precisely on __start.
Signed-off-by: Cupertino Miranda <cmiranda(a)synopsys.com>
Signed-off-by: Alexey Brodkin <abrodkin(a)synopsys.com>
Cc: Vlad Zakharov <vzakhar(a)synopsys.com>
Cc: Vineet Gupta <vgupta(a)synopsys.com>
---
libc/sysdeps/linux/arc/crt1.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libc/sysdeps/linux/arc/crt1.S b/libc/sysdeps/linux/arc/crt1.S
index 178c5b4..ae863e7 100644
--- a/libc/sysdeps/linux/arc/crt1.S
+++ b/libc/sysdeps/linux/arc/crt1.S
@@ -42,9 +42,9 @@ __start:
mov_s r5, r0 ; rltd_fini
add_s r2, sp, 4 ; argv
#ifdef L_Scrt1
- add r0, pcl, @main@pcl
- add r3, pcl, @_init@pcl
- add r4, pcl, @_fini@pcl
+ ld r0, [pcl, @main@gotpc]
+ ld r3, [pcl, @_init@gotpc]
+ ld r4, [pcl, @_fini@gotpc]
#else
mov_s r0, main
mov_s r3, _init
--
2.7.4