From: John David Anglin Date: Sat, 14 Aug 2010 14:42:43 +0000 (+0000) Subject: Revert: X-Git-Tag: releases/gcc-4.4.5~140 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ed97863e83659c05550a12ef0603ae1c58efc1e;p=thirdparty%2Fgcc.git Revert: 2010-08-08 John David Anglin PR boehm-gc/34544 * gthr-posix.h (__gthread_start): Delete. (__gthread_active_init): Use pthread_default_stacksize_np instead of pthread_create to determine if hpux pthreads are active. * gthr-posix95.h (__gthread_start): Delete. (__gthread_active_init): Likewise use pthread_default_stacksize_np. From-SVN: r163243 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e33f5e6f8a0b..0416f0c9d2c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2010-08-14 John David Anglin + + Revert: + 2010-08-08 John David Anglin + + PR boehm-gc/34544 + * gthr-posix.h (__gthread_start): Delete. + (__gthread_active_init): Use pthread_default_stacksize_np instead of + pthread_create to determine if hpux pthreads are active. + * gthr-posix95.h (__gthread_start): Delete. + (__gthread_active_init): Likewise use pthread_default_stacksize_np. + 2010-08-12 Jakub Jelinek PR middle-end/45262 diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index f7449810f98a..82a3c581c0a0 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -263,18 +263,32 @@ __gthread_active_p (void) static volatile int __gthread_active = -1; +static void * +__gthread_start (void *__arg __attribute__((unused))) +{ + return NULL; +} + static void __gthread_active_init (void) __attribute__((noinline)); static void __gthread_active_init (void) { static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - size_t __s; + pthread_t __t; + pthread_attr_t __a; + int __result; __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); if (__gthread_active < 0) { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; + __gthrw_(pthread_attr_init) (&__a); + __gthrw_(pthread_attr_setdetachstate) (&__a, PTHREAD_CREATE_DETACHED); + __result = __gthrw_(pthread_create) (&__t, &__a, __gthread_start, NULL); + if (__result != ENOSYS) + __gthread_active = 1; + else + __gthread_active = 0; + __gthrw_(pthread_attr_destroy) (&__a); } __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); } diff --git a/gcc/gthr-posix95.h b/gcc/gthr-posix95.h index 03237668a322..8772c977a28b 100644 --- a/gcc/gthr-posix95.h +++ b/gcc/gthr-posix95.h @@ -197,18 +197,32 @@ __gthread_active_p (void) static volatile int __gthread_active = -1; +static void * +__gthread_start (void *arg __attribute__((unused))) +{ + return NULL; +} + static void __gthread_active_init (void) __attribute__((noinline)); static void __gthread_active_init (void) { static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - size_t __s; + pthread_t t; + pthread_attr_t a; + int result; __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); if (__gthread_active < 0) { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; + __gthrw_(pthread_attr_init) (&a); + __gthrw_(pthread_attr_setdetachstate) (&a, PTHREAD_CREATE_DETACHED); + result = __gthrw_(pthread_create) (&t, &a, __gthread_start, NULL); + if (result != ENOSYS) + __gthread_active = 1; + else + __gthread_active = 0; + __gthrw_(pthread_attr_destroy) (&a); } __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); }