From 845652b78412a98226c321aade16920d06e552ca Mon Sep 17 00:00:00 2001 From: Nelson Chu Date: Mon, 24 Oct 2022 18:26:36 +0800 Subject: [PATCH] RISC-V: Should reset `again' flag for _bfd_riscv_relax_pc. The R_RISCV_DELETE relocations are no longer deleted at another relax pass, so we should reset 'again' flag to true for _bfd_riscv_relax_pc, while the deleted bytes are marked as R_RISCV_DELETE. bfd/ * elfnn-riscv.c (_bfd_riscv_relax_pc): Set `again' to true while the deleted bytes are marked as R_RISCV_DELETE. --- bfd/elfnn-riscv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index e4064313724..cf852636c9c 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -4586,7 +4586,7 @@ _bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED, bfd_vma symval, bfd_vma max_alignment, bfd_vma reserve_size, - bool *again ATTRIBUTE_UNUSED, + bool *again, riscv_pcgp_relocs *pcgp_relocs, bool undefined_weak) { @@ -4715,6 +4715,7 @@ _bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED, sym_sec, undefined_weak); /* Delete unnecessary AUIPC and reuse the reloc. */ + *again = true; riscv_relax_delete_bytes (abfd, sec, rel->r_offset, 4, link_info, pcgp_relocs, rel); return true; -- 2.30.2