[binutils-gdb] i386: Add GLIBC_ABI_GNU_TLS dependency only if used
H.J. Lu
hjl@sourceware.org
Mon Dec 8 22:51:57 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d9b7ca8816e1b088122a389ff8962785f8c7b10e
commit d9b7ca8816e1b088122a389ff8962785f8c7b10e
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Mon Dec 8 10:06:43 2025 +0800
i386: Add GLIBC_ABI_GNU_TLS dependency only if used
Add GLIBC_ABI_GNU_TLS version dependency only if ___tls_get_addr is
referenced by regular object.
bfd/
PR ld/33287
PR ld/33702
* elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Set
has_tls_get_addr_call only if referenced by regular object.
ld/
PR ld/33287
PR ld/33702
* testsuite/ld-i386/i386.exp: Run PR ld/33702 test.
* testsuite/ld-i386/no-tls.c: New file.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diff:
---
bfd/elfxx-x86.c | 3 ++-
ld/testsuite/ld-i386/i386.exp | 10 ++++++++++
ld/testsuite/ld-i386/no-tls.c | 5 +++++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index e5a24c4ac1d..4495b3eb00b 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -892,7 +892,8 @@ _bfd_x86_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
elf_x86_hash_entry (h)->tls_get_addr = 1;
}
- htab->has_tls_get_addr_call = 1;
+ if (h->ref_regular)
+ htab->has_tls_get_addr_call = 1;
}
/* Pass NULL for __ehdr_start which will be defined by
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index bba0eeda6d8..3a8a8b1af04 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -1525,6 +1525,7 @@ run_ld_link_tests [list \
# The musl C library does not support --gnu-tls-tag nor --gnu2-tls-tag.
if { ![istarget *-*-musl]
+ && [istarget "i?86-*-linux*"]
&& [check_compiler_available] } {
run_cc_link_tests [list \
[list \
@@ -1559,6 +1560,15 @@ if { ![istarget *-*-musl]
{{readelf {-W --version-info} gnu2-tls-1b.rd}} \
"gnu2-tls-1b.so" \
] \
+ [list \
+ "Build no-tls" \
+ "-Wl,--gnu-tls-tag,--gnu2-tls-tag" \
+ "" \
+ { no-tls.c } \
+ {{readelf {-W --version-info} gnu-tls-1b.rd} \
+ {readelf {-W --version-info} gnu2-tls-1b.rd}} \
+ "no-tls" \
+ ] \
]
}
diff --git a/ld/testsuite/ld-i386/no-tls.c b/ld/testsuite/ld-i386/no-tls.c
new file mode 100644
index 00000000000..a9bce4a1445
--- /dev/null
+++ b/ld/testsuite/ld-i386/no-tls.c
@@ -0,0 +1,5 @@
+int
+main ()
+{
+ return 0;
+}
More information about the Binutils-cvs
mailing list