From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7867) id 583313858D20; Fri, 17 Nov 2023 08:43:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 583313858D20 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: liu & zhensong To: bfd-cvs@sourceware.org Subject: [binutils-gdb] LoongArch: Fix ld --no-relax bug X-Act-Checkin: binutils-gdb X-Git-Author: mengqinggang X-Git-Refname: refs/heads/master X-Git-Oldrev: d6ac292e5fecde8fe92f79e83c69d80766f57976 X-Git-Newrev: 363174776d13db9f35f2e54d8f7f5e34b64acbee Message-Id: <20231117084329.583313858D20@sourceware.org> Date: Fri, 17 Nov 2023 08:43:29 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Nov 2023 08:43:29 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D363174776d13= db9f35f2e54d8f7f5e34b64acbee commit 363174776d13db9f35f2e54d8f7f5e34b64acbee Author: mengqinggang Date: Thu Nov 16 19:19:11 2023 +0800 LoongArch: Fix ld --no-relax bug =20 When calling ld with --no-relax, pcalau12i + ld.d still can be relaxed. This patch fix this bug and pcalau12i + ld.d can be relaxed with --rela= x. Diff: --- bfd/elfnn-loongarch.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 18ad3cc91ca..1162cb35cd6 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -3996,29 +3996,22 @@ loongarch_elf_relax_section (bfd *abfd, asection *s= ec, loongarch_relax_align (abfd, sec, sym_sec, info, rel, symval); break; case R_LARCH_DELETE: - if (info->relax_pass =3D=3D 1) + if (1 =3D=3D info->relax_pass) { loongarch_relax_delete_bytes (abfd, sec, rel->r_offset, 4, info); rel->r_info =3D ELFNN_R_INFO (0, R_LARCH_NONE); } break; case R_LARCH_PCALA_HI20: - if (info->relax_pass =3D=3D 0) - { - if (i + 4 > sec->reloc_count) - break; - loongarch_relax_pcala_addi (abfd, sec, rel, symval); - } + if (0 =3D=3D info->relax_pass && (i + 4) <=3D sec->reloc_count) + loongarch_relax_pcala_addi (abfd, sec, rel, symval); break; case R_LARCH_GOT_PC_HI20: - if (local_got) + if (local_got && 0 =3D=3D info->relax_pass + && (i + 4) <=3D sec->reloc_count) { - if (i + 4 > sec->reloc_count) - break; if (loongarch_relax_pcala_ld (abfd, sec, rel)) - { - loongarch_relax_pcala_addi (abfd, sec, rel, symval); - } + loongarch_relax_pcala_addi (abfd, sec, rel, symval); } break; default: