diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-15 09:52:42 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-15 09:52:42 +0000 |
commit | 3bfc27ae36b5a84f1a9c357e39febf41b5912837 (patch) | |
tree | e00fb75938ba9e1c6763967d46fde5221092bbf0 /libjava/configure.host | |
parent | 5ca042e24cf6c62ef047b165ddd835a79d6edbea (diff) | |
download | gcc-3bfc27ae36b5a84f1a9c357e39febf41b5912837.tar.gz |
* configure.host (*-linux*): Don't set slow_pthread_self if primary
installed libpthread is either linuxthreads with floating stacks or
NPTL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65628 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/configure.host')
-rw-r--r-- | libjava/configure.host | 49 |
1 files changed, 49 insertions, 0 deletions
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 <<EOF +#define _GNU_SOURCE 1 +#include <pthread.h> +#include <stdlib.h> +#include <sys/resource.h> +#include <limits.h> + +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 |