aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2006-11-13 13:28:28 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2006-11-13 13:28:28 +0000
commit51f3ea16752100ed8d78423d00035973fbd74988 (patch)
treec1d0aad19273ccb301bcf5a733c832191d1d3a8c /libstdc++-v3
parentc5c7f3cc516fa3858b2251475ae1dcd942e9ed74 (diff)
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118757 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/libsupc++/eh_globals.cc3
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc15
3 files changed, 23 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index bb9d08ce52c..bb7ec9ce431 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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.
diff --git a/libstdc++-v3/libsupc++/eh_globals.cc b/libstdc++-v3/libsupc++/eh_globals.cc
index 424e375696e..317c67bf968 100644
--- a/libstdc++-v3/libsupc++/eh_globals.cc
+++ b/libstdc++-v3/libsupc++/eh_globals.cc
@@ -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
diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index 5fd25f232d9..9b0654b8875 100644
--- a/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/libstdc++-v3/libsupc++/eh_personality.cc
@@ -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
{