x86-64: Add GLIBC_ABI_GNU2_TLS version [BZ #33129]

Programs and shared libraries compiled with -mtls-dialect=gnu2 may fail
silently at run-time against glibc without the GNU2 TLS run-time fix
for:

https://sourceware.org/bugzilla/show_bug.cgi?id=31372

Add GLIBC_ABI_GNU2_TLS version to indicate that glibc has the working
GNU2 TLS run-time.  Linker can add the GLIBC_ABI_GNU2_TLS version to
binaries which depend on the working GNU2 TLS run-time:

https://sourceware.org/bugzilla/show_bug.cgi?id=33130

so that such programs and shared libraries will fail to load and run at
run-time against libc.so without the GLIBC_ABI_GNU2_TLS version, instead
of fail silently at random.

This fixes BZ #33129.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
(cherry picked from commit 9df8fa397d)
This commit is contained in:
H.J. Lu 2025-07-28 12:18:22 -07:00
parent 1ea16a207c
commit 3f0dd818e5
2 changed files with 13 additions and 0 deletions

View File

@ -181,6 +181,14 @@ $(objpfx)check-dt-x86-64-plt.out: $(common-objpfx)libc.so
$(evaluate-test)
generated += check-dt-x86-64-plt.out
tests-special += $(objpfx)check-gnu2-tls.out
$(objpfx)check-gnu2-tls.out: $(common-objpfx)libc.so
LC_ALL=C $(READELF) -V -W $< \
| sed -ne '/.gnu.version_d/, /.gnu.version_r/ p' \
| grep GLIBC_ABI_GNU2_TLS > $@; \
$(evaluate-test)
generated += check-gnu2-tls.out
endif # $(subdir) == elf
ifeq ($(subdir),csu)

View File

@ -5,6 +5,11 @@ libc {
GLIBC_2.13 {
__fentry__;
}
GLIBC_ABI_GNU2_TLS {
# This symbol is used only for empty version map and will be removed
# by scripts/versions.awk.
__placeholder_only_for_empty_version_map;
}
GLIBC_ABI_DT_X86_64_PLT {
# This symbol is used only for empty version map and will be removed
# by scripts/versions.awk.