* libsupc++/eh_globals.cc (__cxxabiv1::__cxa_get_globals):
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 13 Nov 2006 13:28:28 +0000 (13:28 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 13 Nov 2006 13:28:28 +0000 (13:28 +0000)
Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.
* libsupc++/eh_personality.cc (empty_exception_spec): Define
separately in __ARM_EABI_UNWINDER__ case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118757 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/libsupc++/eh_globals.cc
libstdc++-v3/libsupc++/eh_personality.cc

index bb9d08c..bb7ec9c 100644 (file)
@@ -1,5 +1,12 @@
 2006-11-13  Joseph Myers  <joseph@codesourcery.com>
 
+       * libsupc++/eh_globals.cc (__cxxabiv1::__cxa_get_globals):
+       Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.
+       * libsupc++/eh_personality.cc (empty_exception_spec): Define
+       separately in __ARM_EABI_UNWINDER__ case.
+
+2006-11-13  Joseph Myers  <joseph@codesourcery.com>
+
        * libsupc++/typeinfo (__GXX_TYPEINFO_EQUALITY_INLINE): Define.
        Use instead of __GXX_MERGED_TYPEINFO_NAMES to condition inline
        definitions.
index 424e375..317c67b 100644 (file)
@@ -140,6 +140,9 @@ __cxxabiv1::__cxa_get_globals() throw()
          g = static_cast<__cxa_eh_globals*>(v);
          g->caughtExceptions = 0;
          g->uncaughtExceptions = 0;
+#ifdef __ARM_EABI_UNWINDER__
+         g->propagatingExceptions = 0;
+#endif
        }
     }
   else
index 5fd25f2..9b0654b 100644 (file)
@@ -192,6 +192,17 @@ restore_caught_exception(struct _Unwind_Exception* ue_header,
     }                                                          \
   while (0)
 
+// Return true if the filter spec is empty, ie throw().
+
+static bool
+empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
+{
+  const _Unwind_Word* e = ((const _Unwind_Word*) info->TType)
+                         - filter_value - 1;
+
+  return *e == 0;
+}
+
 #else
 typedef const std::type_info _throw_typet;
 
@@ -312,8 +323,6 @@ restore_caught_exception(struct _Unwind_Exception* ue_header,
 
 #define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
 
-#endif // !__ARM_EABI_UNWINDER__
-
 // Return true if the filter spec is empty, ie throw().
 
 static bool
@@ -326,6 +335,8 @@ empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
   return tmp == 0;
 }
 
+#endif // !__ARM_EABI_UNWINDER__
+
 namespace __cxxabiv1
 {