From ba39351eb368d6564434cd9e7bf9bebc699ed215 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 15 Apr 2003 11:52:42 +0200 Subject: [PATCH] configure.host (*-linux*): Don't set slow_pthread_self if primary installed libpthread is either... * configure.host (*-linux*): Don't set slow_pthread_self if primary installed libpthread is either linuxthreads with floating stacks or NPTL. From-SVN: r65628 --- libjava/ChangeLog | 6 ++++++ libjava/configure.host | 49 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8d9944d4c85..3fe91a3c20f 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2003-04-15 Jakub Jelinek + + * configure.host (*-linux*): Don't set slow_pthread_self if primary + installed libpthread is either linuxthreads with floating stacks or + NPTL. + 2003-04-14 Tom Tromey * resolve.cc (_Jv_PrepareClass): Round up class size to multiple diff --git a/libjava/configure.host b/libjava/configure.host index 2fca3e1cc1d..f1c65bcc50e 100644 --- a/libjava/configure.host +++ b/libjava/configure.host @@ -164,6 +164,55 @@ case "${host}" in x86_64*-linux* | \ sh-linux* | sh[34]*-linux*) can_unwind_signal=yes + if test x$slow_pthread_self = xyes \ + && test x$cross_compiling != xyes; then + cat > conftest.c < +#include +#include +#include + +void * +tf (void *arg __attribute__ ((unused))) +{ + pthread_attr_t a; + size_t s; + + if (pthread_getattr_np (pthread_self (), &a) + || pthread_attr_getstacksize (&a, &s) + || s > 2 * PTHREAD_STACK_MIN) + exit (1); + exit (0); +} + +int +main (int argc, char **argv) +{ + pthread_t p; + void *ret; + struct rlimit r; + + if (argc == 2) + { + r.rlim_cur = 2 * PTHREAD_STACK_MIN; + r.rlim_max = 2 * PTHREAD_STACK_MIN; + if (setrlimit (RLIMIT_STACK, &r)) + exit (1); + execl (argv[1], argv[0], NULL); + exit (1); + } + + if (pthread_create (&p, NULL, tf, NULL) + || pthread_join (p, &ret)) + exit (1); + exit (1); +} +EOF + $CC -o conftest conftest.c -lpthread > /dev/null 2>&1 && \ + ./conftest ./conftest && slow_pthread_self= + rm -f conftest conftest.c + fi ;; *-*-darwin*) enable_hash_synchronization_default=no