39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
From 4d7bba23a39fba18d6d13a2941a3c232011a7064 Mon Sep 17 00:00:00 2001
|
|
From: Alan Modra <amodra@gmail.com>
|
|
Date: Fri, 16 Sep 2022 18:08:44 +0930
|
|
Subject: [PATCH 050/160] PowerPC64 pcrel got relocs against local symbols
|
|
|
|
Not that anyone would want to indirect via the GOT when an address can
|
|
be loaded directly with pla, the following:
|
|
|
|
pld 3,x@got@pcrel
|
|
x:
|
|
|
|
leads to "Internal error in md_apply_fix", because the generic parts
|
|
of assembler fixup handling convert the fx_pcrel fixup to one without
|
|
a symbol. Stop that happening.
|
|
|
|
* config/tc-ppc.c (ppc_force_relocation): Add PLT_PCREL34 and
|
|
assorted GOT_PCREL34 relocs.
|
|
|
|
(cherry picked from commit 49c3ed081fed6b8e2b48fdc48f805f11e4589514)
|
|
---
|
|
gas/config/tc-ppc.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
--- a/gas/config/tc-ppc.c
|
|
+++ b/gas/config/tc-ppc.c
|
|
@@ -6676,6 +6676,12 @@ ppc_force_relocation (fixS *fix)
|
|
case BFD_RELOC_PPC_BA16_BRNTAKEN:
|
|
case BFD_RELOC_24_PLT_PCREL:
|
|
case BFD_RELOC_PPC64_TOC:
|
|
+ case BFD_RELOC_PPC64_PLT_PCREL34:
|
|
+ case BFD_RELOC_PPC64_GOT_PCREL34:
|
|
+ case BFD_RELOC_PPC64_GOT_TLSGD_PCREL34:
|
|
+ case BFD_RELOC_PPC64_GOT_TLSLD_PCREL34:
|
|
+ case BFD_RELOC_PPC64_GOT_TPREL_PCREL34:
|
|
+ case BFD_RELOC_PPC64_GOT_DTPREL_PCREL34:
|
|
return 1;
|
|
case BFD_RELOC_PPC_B26:
|
|
case BFD_RELOC_PPC_BA26:
|