summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-15 18:05:41 +0000
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-15 18:05:41 +0000
commite2f554a397708653792573133b2f5c4e101bf8f4 (patch)
tree94ecfd1c739846dfacfdfe9ea29aa6c841614901
parentd786f066a9d633ca973ecdc02be83e3b2c9d9f8b (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc4
-rw-r--r--libstdc++-v3/libsupc++/eh_throw.cc5
-rw-r--r--libstdc++-v3/libsupc++/unwind-cxx.h2
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.