From: John David Anglin Date: Sat, 14 Aug 2010 14:36:47 +0000 (+0000) Subject: Revert: X-Git-Tag: releases/gcc-4.3.6~380 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40a0b7ecaabe6454c2761b4699c5f5bed61d4fd8;p=thirdparty%2Fgcc.git Revert: 2010-08-10 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: r163242 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bec37a0c9b45..fa4a13ec8454 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2010-08-14 John David Anglin + + Revert: + 2010-08-10 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-11 Richard Guenther PR c/44555 diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index 3bf4f06c4908..a90dc11e6394 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -237,18 +237,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 68712eba3526..9d6939eaf916 100644 --- a/gcc/gthr-posix95.h +++ b/gcc/gthr-posix95.h @@ -200,18 +200,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); }