PR ld/33427
Patches introduced in the GCC mainline:
commit
8cad8f94b450be9b73d07bdeef7fa1778d3f2b96
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Sep 5 15:40:51 2025 -0700
c: Update TLS model after processing a TLS variable
Set a tentative TLS model in grokvardecl and update TLS mode with
the default TLS access model after a TLS variable has been fully
processed if the default TLS access model is stronger,
triggered a linker error when building glibc using build-many-glibcs.py.
See: https://sourceware.org/pipermail/binutils/2025-September/144225.html
This fix uses more appropriate assertions.
case R_LARCH_TLS_LE_LO12_R:
case R_LARCH_TLS_LE64_LO20:
case R_LARCH_TLS_LE64_HI12:
- BFD_ASSERT (resolved_local && elf_hash_table (info)->tls_sec);
+ BFD_ASSERT (bfd_link_executable (info));
relocation += rel->r_addend;
relocation = tlsoff (info, relocation);
"desc-ie-norelax" \
] \
] \
+
+ run_ld_link_tests \
+ [list \
+ [list \
+ "undefind weak with tls le" \
+ "" "-e0" \
+ "" \
+ {undefweak_le.s} \
+ {} \
+ "undefweak_le" \
+ ] \
+ ]
}
if [istarget "loongarch64-*-*"] {
--- /dev/null
+_start:
+ lu12i.w $t0,%le_hi20_r(undefweak_le)
+ add.d $t0,$t0,$tp,%le_add_r(undefweak_le)
+ ld.d $t0,$t0,%le_lo12_r(undefweak_le)
+
+ .weak undefweak_le
+ .hidden undefweak_le