summaryrefslogtreecommitdiff
path: root/LoongArch-Remove-support-code-for-old-linker-in-star.patch
blob: 3d688da1d9ce58cd2672ec9ec6f6e9488cad504f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
From f8d66a269cb6f1a7087afadf3375bdf0553abf53 Mon Sep 17 00:00:00 2001
From: Xi Ruoyao <xry111@xry111.site>
Date: Sun, 27 Aug 2023 00:36:50 +0800
Subject: [PATCH 12/29] LoongArch: Remove support code for old linker in
 start.S

We are requiring Binutils >= 2.41, so la.pcrel always works here.

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Peng Fan <fanpeng@loongson.cn>
Signed-off-by: ticat_fp <fanpeng@loongson.cn>
---
 sysdeps/loongarch/start.S | 19 +++----------------
 1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/sysdeps/loongarch/start.S b/sysdeps/loongarch/start.S
index e9d82033..bf6bfc9e 100644
--- a/sysdeps/loongarch/start.S
+++ b/sysdeps/loongarch/start.S
@@ -60,20 +60,7 @@ ENTRY (ENTRY_POINT)
 	cfi_undefined (1)
 	or		a5, a0, zero /* rtld_fini */
 
-#if ENABLE_STATIC_PIE
-/* For static PIE, the GOT cannot be used in _start because the GOT entries are
-   offsets instead of real addresses before __libc_start_main.
-   __libc_start_main and/or main may be not local, so we rely on the linker to
-   produce PLT entries for them.  GNU ld >= 2.40 supports this.  */
-# define LA la.pcrel
-#else
-/* Old GNU ld (< 2.40) cannot handle PC relative address against a non-local
-   function correctly.  We deem these old linkers failing to support static PIE
-   and load the addresses from GOT.  */
-# define LA la.got
-#endif
-
-	LA		a0, t0, main
+	la.pcrel	a0, t0, main
 	REG_L		a1, sp, 0
 	ADDI		a2, sp, SZREG
 
@@ -84,9 +71,9 @@ ENTRY (ENTRY_POINT)
 	move		a4, zero /* used to be fini */
 	or		a6, sp, zero /* stack_end */
 
-	LA		ra, t0, __libc_start_main
+	la.pcrel	ra, t0, __libc_start_main
 	jirl		ra, ra, 0
 
-	LA		ra, t0, abort
+	la.pcrel	ra, t0, abort
 	jirl		ra, ra, 0
 END (ENTRY_POINT)
-- 
2.33.0