aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/18_support
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-11-26 14:13:32 +0000
committerJonathan Wakely <jwakely@redhat.com>2020-11-26 16:15:52 +0000
commit10ee46adf44ae731fc4f9e9fdc25ad60c9d43a9c (patch)
tree099e4a08c5c4d20a446f9beb44d5a1e8a84e98a5 /libstdc++-v3/testsuite/18_support
parent294e72e9acbd0ff15ef5b18895de62cc173464ca (diff)
downloadgcc-10ee46adf44ae731fc4f9e9fdc25ad60c9d43a9c.zip
gcc-10ee46adf44ae731fc4f9e9fdc25ad60c9d43a9c.tar.gz
gcc-10ee46adf44ae731fc4f9e9fdc25ad60c9d43a9c.tar.bz2
libstdc++: Add "futex" and "gthreads" effective-target keywords
This adds a new "futex" effective-target keyword that can be used to selectively enable/disable tests based on _GLIBCXX_HAVE_LINUX_FUTEX, instead of checking for that macro in the code. It also adds "gthreads" as another one, to make the result of the dg-require-gthreads directive usable in target selectors. With these new keywords two tests that are currently only run for linux can also be run for targets using gthr-single.h (e.g. AIX single-thread multilib, and targets without a gthreads implementation). libstdc++-v3/ChangeLog: * testsuite/18_support/96817.cc: Use new effective-target keywords to select supported targets more effectively. * testsuite/30_threads/call_once/66146.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_futex): Define new proc. (check_effective_target_gthreads): Define new proc to replace dg-require-gthreads.
Diffstat (limited to 'libstdc++-v3/testsuite/18_support')
-rw-r--r--libstdc++-v3/testsuite/18_support/96817.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/libstdc++-v3/testsuite/18_support/96817.cc b/libstdc++-v3/testsuite/18_support/96817.cc
index 4591a72..7f35f03 100644
--- a/libstdc++-v3/testsuite/18_support/96817.cc
+++ b/libstdc++-v3/testsuite/18_support/96817.cc
@@ -15,19 +15,18 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-options "-pthread" }
-// { dg-do run { target *-*-linux-gnu } }
-// { dg-require-effective-target pthread }
+// { dg-do run }
+// { dg-additional-options "-pthread" { target pthread } }
+
+// Static init cannot detect recursion for gthreads targets without futexes
+// (and the futex case can only detect it if __libc_single_threaded==true).
+// { dg-skip-if "unsupported" { gthreads && { ! futex } } }
// PR libstdc++/96817
#include <exception>
#include <stdlib.h>
-#ifndef _GLIBCXX_HAVE_LINUX_FUTEX
-# error "This test requries futex support in the library"
-#endif
-
int init()
{
#if __has_include(<sys/single_threaded.h>)