OSDN Git Service

* libstdc++-v3/libsupc++/unwind-cxx.h (__cxa_exception):
authorsje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Aug 2002 18:05:41 +0000 (18:05 +0000)
committersje <sje@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 15 Aug 2002 18:05:41 +0000 (18:05 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_personality.cc
libstdc++-v3/libsupc++/eh_throw.cc
libstdc++-v3/libsupc++/unwind-cxx.h

index 9fa76a9..b208fd0 100644 (file)
@@ -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
index 35e93a3..acc9c2e 100644 (file)
@@ -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);
     }
 
index 407b829..f20368a 100644 (file)
@@ -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)
index ea30eba..b0b0b36 100644 (file)
@@ -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.