Commit 46fb6400 by Joseph Myers Committed by Joseph Myers

eh_globals.cc (__cxxabiv1::__cxa_get_globals): Initialize propagatingExceptions…

eh_globals.cc (__cxxabiv1::__cxa_get_globals): Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.

	* 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.

From-SVN: r118757
parent b54c93b7
2006-11-13 Joseph Myers <joseph@codesourcery.com> 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. * libsupc++/typeinfo (__GXX_TYPEINFO_EQUALITY_INLINE): Define.
Use instead of __GXX_MERGED_TYPEINFO_NAMES to condition inline Use instead of __GXX_MERGED_TYPEINFO_NAMES to condition inline
definitions. definitions.
......
...@@ -140,6 +140,9 @@ __cxxabiv1::__cxa_get_globals() throw() ...@@ -140,6 +140,9 @@ __cxxabiv1::__cxa_get_globals() throw()
g = static_cast<__cxa_eh_globals*>(v); g = static_cast<__cxa_eh_globals*>(v);
g->caughtExceptions = 0; g->caughtExceptions = 0;
g->uncaughtExceptions = 0; g->uncaughtExceptions = 0;
#ifdef __ARM_EABI_UNWINDER__
g->propagatingExceptions = 0;
#endif
} }
} }
else else
......
...@@ -192,6 +192,17 @@ restore_caught_exception(struct _Unwind_Exception* ue_header, ...@@ -192,6 +192,17 @@ restore_caught_exception(struct _Unwind_Exception* ue_header,
} \ } \
while (0) 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 #else
typedef const std::type_info _throw_typet; typedef const std::type_info _throw_typet;
...@@ -312,8 +323,6 @@ restore_caught_exception(struct _Unwind_Exception* ue_header, ...@@ -312,8 +323,6 @@ restore_caught_exception(struct _Unwind_Exception* ue_header,
#define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND #define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
#endif // !__ARM_EABI_UNWINDER__
// Return true if the filter spec is empty, ie throw(). // Return true if the filter spec is empty, ie throw().
static bool static bool
...@@ -326,6 +335,8 @@ empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value) ...@@ -326,6 +335,8 @@ empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
return tmp == 0; return tmp == 0;
} }
#endif // !__ARM_EABI_UNWINDER__
namespace __cxxabiv1 namespace __cxxabiv1
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment