aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
diff options
context:
space:
mode:
authorTeemu Torma <tot@trema.com>1997-12-24 23:56:08 +0000
committerJeff Law <law@gcc.gnu.org>1997-12-24 16:56:08 -0700
commitf24af81bcad5190a51bd36309ab43dd3d5e3cc9d (patch)
tree2e6cf425a80122eaea96bbebc87b797b0242c6da /gcc/libgcc2.c
parentdf3b6ab30ea4e3310b79eadb2c41fb6243d3b4aa (diff)
downloadgcc-f24af81bcad5190a51bd36309ab43dd3d5e3cc9d.zip
gcc-f24af81bcad5190a51bd36309ab43dd3d5e3cc9d.tar.gz
gcc-f24af81bcad5190a51bd36309ab43dd3d5e3cc9d.tar.bz2
Makefile.in (GTHREAD_FLAGS): New var.
* Makefile.in (GTHREAD_FLAGS): New var. (LIBGCC2_CFLAGS): Added $(GTHREAD_FLAGS). (distclean): Remove gthr-default.h. * configure.in: Accept dce as a thread package. Check for thread.h and pthread.h. Link gthr-default.h to appropriate thread file and set gthread_flags. (hppa1.1-*-hpux10*): If --enable-threads, use dce threads and include multilib definitions from pa/t-dce-thr. (sparc-*-solaris2*): Enable threads by default, if thread.h or pthread.h is found, preferring posix threads over solaris ones. * config/pa/t-dce-thr: New file. * config/pa/t-pa: Removed multilibs. * config/sparc/t-sol2: Ditto. * gthr.h: New file. * gthr-single.h: New file. * gthr-posix.h: New file. * gthr-solaris.h: New file. * gthr-dce.h: New file. * libgcc-thr.h: Removed. * objc/thr-dce.c: New file copied from thr-decosf1.c. * frame.c: Include gthr.h instead of libgcc-thr.h. * libgcc2.c: Include gthr.h instead of libgcc-thr.h. (eh_context_initialize): If __gthread_once fails, use static eh context. (eh_context_free): Call __gthread_key_dtor. From-SVN: r17235
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r--gcc/libgcc2.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
index aede526..46dbdaa 100644
--- a/gcc/libgcc2.c
+++ b/gcc/libgcc2.c
@@ -2965,7 +2965,7 @@ int _exit_dummy_decl = 0; /* prevent compiler & linker warnings */
#ifdef L_eh
-#include "libgcc-thr.h"
+#include "gthr.h"
/* Shared exception handling support routines. */
@@ -3038,6 +3038,7 @@ static __gthread_key_t eh_context_key;
static void
eh_context_free (void *ptr)
{
+ __gthread_key_dtor (eh_context_key, ptr);
if (ptr)
free (ptr);
}
@@ -3094,7 +3095,11 @@ eh_context_initialize ()
#if __GTHREADS
static __gthread_once_t once = __GTHREAD_ONCE_INIT;
- __gthread_once (&once, eh_threads_initialize);
+ if (__gthread_once (&once, eh_threads_initialize) == -1)
+ {
+ /* Use static version of EH context. */
+ get_eh_context = &eh_context_static;
+ }
#else /* no __GTHREADS */