diff options
author | Alan Modra <amodra@gmail.com> | 2022-09-16 18:08:44 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-09-16 18:53:20 +0930 |
commit | 4d7bba23a39fba18d6d13a2941a3c232011a7064 (patch) | |
tree | 718d42a2c73f7bfd10453acddd09d789105d988f | |
parent | 4d4e9337d1eb26a0cc24b4f8b70d718eeadbf682 (diff) | |
download | binutils-4d7bba23a39fba18d6d13a2941a3c232011a7064.zip binutils-4d7bba23a39fba18d6d13a2941a3c232011a7064.tar.gz binutils-4d7bba23a39fba18d6d13a2941a3c232011a7064.tar.bz2 |
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)
-rw-r--r-- | gas/config/tc-ppc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 2555052..1a68ca2 100644 --- 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: |