diff options
author | Teemu Torma <tot@trema.com> | 1997-12-24 23:56:08 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-12-24 16:56:08 -0700 |
commit | f24af81bcad5190a51bd36309ab43dd3d5e3cc9d (patch) | |
tree | 2e6cf425a80122eaea96bbebc87b797b0242c6da /gcc/libgcc2.c | |
parent | df3b6ab30ea4e3310b79eadb2c41fb6243d3b4aa (diff) | |
download | gcc-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.c | 9 |
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 */ |