diff options
author | Teemu Torma <tot@trema.com> | 1998-03-11 12:07:25 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1998-03-11 04:07:25 -0800 |
commit | 754d1a92e65d7a8fdfdc36e2b72e8abfdcf70f5b (patch) | |
tree | 722397066de1f2780c4301c0a26524b7d9b93805 /gcc/libgcc2.c | |
parent | ffacfc7cb67870796368b9dfa000d0e1f36ab879 (diff) | |
download | gcc-754d1a92e65d7a8fdfdc36e2b72e8abfdcf70f5b.zip gcc-754d1a92e65d7a8fdfdc36e2b72e8abfdcf70f5b.tar.gz gcc-754d1a92e65d7a8fdfdc36e2b72e8abfdcf70f5b.tar.bz2 |
Patch from Teemu Torma to fix Solaris 2.6 EH failures.
* gthr.h: Changed the comment about return values.
* gthr-solaris.h (__gthread_once): Do not use errno; return the
error number instead of -1.
(__gthread_key_create): Any non-zero return value is an error.
* libgcc2.c (eh_context_initialize): Check for non-zero return
value from __gthread_once.
Check that the value of get_eh_context was really changed.
From-SVN: r18480
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index e5ad420..f1032a5 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -3132,7 +3132,11 @@ eh_context_initialize () #if __GTHREADS static __gthread_once_t once = __GTHREAD_ONCE_INIT; - if (__gthread_once (&once, eh_threads_initialize) == -1) + /* Make sure that get_eh_context does not point to us anymore. + Some systems have dummy thread routines in their libc that + return a success (Solaris 2.6 for example). */ + if (__gthread_once (&once, eh_threads_initialize) != 0 + || get_eh_context == &eh_context_initialize) { /* Use static version of EH context. */ get_eh_context = &eh_context_static; |