From bb9a0a36e78aa564021b377a4a7fab4851b2c22b Mon Sep 17 00:00:00 2001 From: mengqinggang Date: Thu, 26 Dec 2024 14:14:12 +0800 Subject: [PATCH] LoongArch: Add relaxation support for call36 that jump to PLT entry Part of commit a104f0a3e620 ("LoongArch: Add more relaxation support for call36") in master. This part is needed for 2.43 branch to fix a link failure of QtWebEngine-6.8.1, which can be demonstrated with a reduced test case (with -shared): .text .zero 1 << 27 # pretending we have a lot of code in .text .globl f # preemptible, thus must be called via PLT f: move $a0, $r0 ret g: pcaddu18i $t0, %call36(f) jr $t0 Signed-off-by: Xi Ruoyao --- bfd/elfnn-loongarch.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 7760b5279f8..610713a9d7e 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -5410,6 +5410,11 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, && GOT_TLS_GD_BOTH_P (tls_type)) symval += 2 * GOT_ENTRY_SIZE; } + else if (h->plt.offset != MINUS_ONE) + { + sym_sec = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; + symval = h->plt.offset; + } else if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) && h->root.u.def.section != NULL -- 2.47.2