From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1062) id 006DC38582B9; Tue, 20 Sep 2022 23:39:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 006DC38582B9 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Alan Modra To: bfd-cvs@sourceware.org Subject: [binutils-gdb] Re: PowerPC64 pcrel got relocs against local symbols X-Act-Checkin: binutils-gdb X-Git-Author: Alan Modra X-Git-Refname: refs/heads/master X-Git-Oldrev: 8c8fa33c20ec0be7bfcaf7e1b605d37dca63733f X-Git-Newrev: 8b168f1a1e09e337d2a970f204a0230c091bbe58 Message-Id: <20220920233905.006DC38582B9@sourceware.org> Date: Tue, 20 Sep 2022 23:39:04 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Sep 2022 23:39:05 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D8b168f1a1e09= e337d2a970f204a0230c091bbe58 commit 8b168f1a1e09e337d2a970f204a0230c091bbe58 Author: Alan Modra Date: Wed Sep 21 09:06:29 2022 +0930 Re: PowerPC64 pcrel got relocs against local symbols =20 The last patch wasn't all that shiny. There are rather a lot more relocations that can hit the assertion in md_apply_fix if the symbol is local or absolute. Fix them all. =20 * config/tc-ppc.c (ppc_force_relocation): Add all relocs that expect a symbol in md_apply_fix. Remove tls pcrel relocs already covered in general tls match range. Diff: --- gas/config/tc-ppc.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++--= ---- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 1ed8ef2034b..d20fd757091 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -6679,8 +6679,6 @@ ppc_force_relocation (fixS *fix) int ppc_force_relocation (fixS *fix) { - /* Branch prediction relocations must force a relocation, as must - the vtable description relocs. */ switch (fix->fx_r_type) { case BFD_RELOC_PPC_B16_BRTAKEN: @@ -6689,12 +6687,60 @@ 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_16_GOTOFF: + case BFD_RELOC_LO16_GOTOFF: + case BFD_RELOC_HI16_GOTOFF: + case BFD_RELOC_HI16_S_GOTOFF: + case BFD_RELOC_LO16_PLTOFF: + case BFD_RELOC_HI16_PLTOFF: + case BFD_RELOC_HI16_S_PLTOFF: + case BFD_RELOC_GPREL16: + case BFD_RELOC_16_BASEREL: + case BFD_RELOC_LO16_BASEREL: + case BFD_RELOC_HI16_BASEREL: + case BFD_RELOC_HI16_S_BASEREL: + case BFD_RELOC_PPC_TOC16: + case BFD_RELOC_PPC64_TOC16_LO: + case BFD_RELOC_PPC64_TOC16_HI: + case BFD_RELOC_PPC64_TOC16_HA: + case BFD_RELOC_PPC64_PLTGOT16: + case BFD_RELOC_PPC64_PLTGOT16_LO: + case BFD_RELOC_PPC64_PLTGOT16_HI: + case BFD_RELOC_PPC64_PLTGOT16_HA: + case BFD_RELOC_PPC64_GOT16_DS: + case BFD_RELOC_PPC64_GOT16_LO_DS: + case BFD_RELOC_PPC64_PLT16_LO_DS: + case BFD_RELOC_PPC64_SECTOFF_DS: + case BFD_RELOC_PPC64_SECTOFF_LO_DS: + case BFD_RELOC_PPC64_TOC16_DS: + case BFD_RELOC_PPC64_TOC16_LO_DS: + case BFD_RELOC_PPC64_PLTGOT16_DS: + case BFD_RELOC_PPC64_PLTGOT16_LO_DS: + case BFD_RELOC_PPC_EMB_NADDR16: + case BFD_RELOC_PPC_EMB_NADDR16_LO: + case BFD_RELOC_PPC_EMB_NADDR16_HI: + case BFD_RELOC_PPC_EMB_NADDR16_HA: + case BFD_RELOC_PPC_EMB_SDAI16: + case BFD_RELOC_PPC_EMB_SDA2I16: + case BFD_RELOC_PPC_EMB_SDA2REL: + case BFD_RELOC_PPC_EMB_SDA21: + case BFD_RELOC_PPC_EMB_MRKREF: + case BFD_RELOC_PPC_EMB_RELSEC16: + case BFD_RELOC_PPC_EMB_RELST_LO: + case BFD_RELOC_PPC_EMB_RELST_HI: + case BFD_RELOC_PPC_EMB_RELST_HA: + case BFD_RELOC_PPC_EMB_BIT_FLD: + case BFD_RELOC_PPC_EMB_RELSDA: + case BFD_RELOC_PPC_VLE_SDA21: + case BFD_RELOC_PPC_VLE_SDA21_LO: + case BFD_RELOC_PPC_VLE_SDAREL_LO16A: + case BFD_RELOC_PPC_VLE_SDAREL_LO16D: + case BFD_RELOC_PPC_VLE_SDAREL_HI16A: + case BFD_RELOC_PPC_VLE_SDAREL_HI16D: + case BFD_RELOC_PPC_VLE_SDAREL_HA16A: + case BFD_RELOC_PPC_VLE_SDAREL_HA16D: 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: