[gcc r15-10860] testsuite: Add tls_link effective target
Torbjorn Svensson
azoff@gcc.gnu.org
Wed Feb 25 08:26:56 GMT 2026
https://gcc.gnu.org/g:2aae96a8c727458f57865b68a862696c875bdfb7
commit r15-10860-g2aae96a8c727458f57865b68a862696c875bdfb7
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date: Thu Apr 17 15:55:14 2025 +0000
testsuite: Add tls_link effective target
Some tests have 'dg-do link' but currently require 'tls' which is a
compile-only check.
In some configurations of arm-none-eabi, the 'tls' effective-target
can be successful although these tests fail to link with
undefined reference to `__aeabi_read_tp'
This patch as a new tls_link effective target which makes sure we can
build an executable.
gcc/testsuite/ChangeLog:
* lib/target-supports.exp (check_effective_target_tls_link): New.
* g++.dg/tls/pr102496-1.C: Require tls_link.
* g++.dg/tls/pr77285-1.C: Likewise.
gcc/ChangeLog:
* doc/sourcebuild.texi (tls_link): Add documentation.
(cherry picked from commit 8287861f7ca7418cd924ea2491c743c72ddb55dd)
Diff:
---
gcc/doc/sourcebuild.texi | 3 +++
gcc/testsuite/g++.dg/tls/pr102496-1.C | 2 +-
gcc/testsuite/g++.dg/tls/pr77285-1.C | 2 +-
gcc/testsuite/lib/target-supports.exp | 10 ++++++++++
4 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index b509d49cb722..12f418bba10c 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -1975,6 +1975,9 @@ at plain @option{-O2}.
@item tls
Target supports thread-local storage.
+@item tls_link
+Target supports linking TLS executables.
+
@item tls_native
Target supports native (rather than emulated) thread-local storage.
diff --git a/gcc/testsuite/g++.dg/tls/pr102496-1.C b/gcc/testsuite/g++.dg/tls/pr102496-1.C
index 8220e1e663ac..e015ae95eab5 100644
--- a/gcc/testsuite/g++.dg/tls/pr102496-1.C
+++ b/gcc/testsuite/g++.dg/tls/pr102496-1.C
@@ -1,6 +1,6 @@
// PR c++/102496
// { dg-do link { target c++11 } }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_link }
// { dg-add-options tls }
// { dg-additional-sources pr102496-2.C }
diff --git a/gcc/testsuite/g++.dg/tls/pr77285-1.C b/gcc/testsuite/g++.dg/tls/pr77285-1.C
index 7a9341429d70..340c88be77bc 100644
--- a/gcc/testsuite/g++.dg/tls/pr77285-1.C
+++ b/gcc/testsuite/g++.dg/tls/pr77285-1.C
@@ -1,5 +1,5 @@
// { dg-do link { target c++11 } }
-// { dg-require-effective-target tls }
+// { dg-require-effective-target tls_link }
// { dg-add-options tls }
// { dg-additional-sources pr77285-2.C }
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index bcd8fb5748bb..4aa50e1a1b5e 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1051,6 +1051,16 @@ proc check_effective_target_tls {} {
}]
}
+# Return 1 if we can link using TLS, 0 otherwise.
+
+proc check_effective_target_tls_link {} {
+ return [check_no_compiler_messages tls_link executable {
+ __thread int i;
+ int main (void) { return i; }
+ void g (int j) { i = j; }
+ }]
+}
+
# Return 1 if *native* thread local storage (TLS) is supported, 0 otherwise.
proc check_effective_target_tls_native {} {
More information about the Gcc-cvs
mailing list