Browse Source

arc: crt1: Fix to PIE

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@synopsys.com>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Vlad Zakharov <vzakhar@synopsys.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cupertino Miranda 7 years ago
parent
commit
e189f98fcf
1 changed files with 3 additions and 3 deletions
  1. 3 3
      libc/sysdeps/linux/arc/crt1.S

+ 3 - 3
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