]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
unwind-cxx.h (__cxa_exception): Change catchTemp type from void* to _Unwind_Ptr.
authorSteve Ellcey <sje@cup.hp.com>
Thu, 15 Aug 2002 18:05:41 +0000 (18:05 +0000)
committerSteve Ellcey <sje@gcc.gnu.org>
Thu, 15 Aug 2002 18:05:41 +0000 (18:05 +0000)
* 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.

From-SVN: r56352

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

index 9fa76a9fa6119413493613effd7e3ff17ee687c0..b208fd05a6bd8779f80934ca78dfbb78a9a3741c 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 35e93a3c473ee163806fac2dc0b0e6076d8c8ad9..acc9c2eb63e1260a1284520d3d4c856e06eea11a 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 407b829f24b15278023b89eacb3c596074d384ea..f20368a13f6cc811a2bd0c435516120807d642c1 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 ea30ebab8efaa7b5fd6e1919a250375d6c673600..b0b0b366b7870c5eedcda329487cae3241fefe58 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.