diff options
author | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-15 18:05:41 +0000 |
---|---|---|
committer | sje <sje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-15 18:05:41 +0000 |
commit | e2f554a397708653792573133b2f5c4e101bf8f4 (patch) | |
tree | 94ecfd1c739846dfacfdfe9ea29aa6c841614901 | |
parent | d786f066a9d633ca973ecdc02be83e3b2c9d9f8b (diff) | |
download | gcc-e2f554a397708653792573133b2f5c4e101bf8f4.tar.gz |
* libstdc++-v3/libsupc++/unwind-cxx.h (__cxa_exception):
Change catchTemp type from void* to _Unwind_Ptr.
* libstdc++-v3/libsupc++/eh_personality.cc (PERSONALITY_FUNCTION):
Do not cast landing_pad or base_of_encoded_value to (void *).
* libstdc++-v3/libsupc++/eh_throw.cc (__gxx_exception_cleanup):
Accept _URC_NO_REASON as a valid reason code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56352 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_personality.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/eh_throw.cc | 5 | ||||
-rw-r--r-- | libstdc++-v3/libsupc++/unwind-cxx.h | 2 |
4 files changed, 16 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9fa76a9fa61..b208fd05a6b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2002-08-15 Steve Ellcey <sje@cup.hp.com> + + * libsupc++/unwind-cxx.h (__cxa_exception): Change catchTemp + type from void* to _Unwind_Ptr. + * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): + Do not cast landing_pad or base_of_encoded_value to (void *). + * libsupc++/eh_throw.cc (__gxx_exception_cleanup): + Accept _URC_NO_REASON as a valid reason code. + 2002-08-14 Jonathan Wakely <jw@kayari.org> * docs/html/22_locale/messages.html: Use HTML entities for diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc index 35e93a3c473..acc9c2eb63e 100644 --- a/libstdc++-v3/libsupc++/eh_personality.cc +++ b/libstdc++-v3/libsupc++/eh_personality.cc @@ -394,7 +394,7 @@ PERSONALITY_FUNCTION (int version, // ??? Completely unknown what this field is supposed to be for. // ??? Need to cache TType encoding base for call_unexpected. - xh->catchTemp = (void *) (_Unwind_Ptr) landing_pad; + xh->catchTemp = landing_pad; } return _URC_HANDLER_FOUND; } @@ -411,7 +411,7 @@ PERSONALITY_FUNCTION (int version, if (handler_switch_value < 0) { parse_lsda_header (context, xh->languageSpecificData, &info); - xh->catchTemp = (void *) base_of_encoded_value (info.ttype_encoding, + xh->catchTemp = base_of_encoded_value (info.ttype_encoding, context); } diff --git a/libstdc++-v3/libsupc++/eh_throw.cc b/libstdc++-v3/libsupc++/eh_throw.cc index 407b829f24b..f20368a13f6 100644 --- a/libstdc++-v3/libsupc++/eh_throw.cc +++ b/libstdc++-v3/libsupc++/eh_throw.cc @@ -42,7 +42,10 @@ __gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc) // If we haven't been caught by a foreign handler, then this is // some sort of unwind error. In that case just die immediately. - if (code != _URC_FOREIGN_EXCEPTION_CAUGHT) + // _Unwind_DeleteException in the HP-UX IA64 libunwind library + // returns _URC_NO_REASON and not _URC_FOREIGN_EXCEPTION_CAUGHT + // like the GCC _Unwind_DeleteException function does. + if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON) __terminate (header->terminateHandler); if (header->exceptionDestructor) diff --git a/libstdc++-v3/libsupc++/unwind-cxx.h b/libstdc++-v3/libsupc++/unwind-cxx.h index ea30ebab8ef..b0b0b366b78 100644 --- a/libstdc++-v3/libsupc++/unwind-cxx.h +++ b/libstdc++-v3/libsupc++/unwind-cxx.h @@ -70,7 +70,7 @@ struct __cxa_exception int handlerSwitchValue; const unsigned char *actionRecord; const unsigned char *languageSpecificData; - void *catchTemp; + _Unwind_Ptr catchTemp; void *adjustedPtr; // The generic exception header. Must be last. |