aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/libsupc++/eh_personality.cc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2007-06-13 19:31:58 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2007-06-13 19:31:58 +0000
commitddb4f387ee60618b1cb04d2143b47f808f9c9e02 (patch)
tree192108f6e223cc6ce0e5ddafcb6dd72d42e86d70 /libstdc++-v3/libsupc++/eh_personality.cc
parent29dc9e20114a1b70e01fe6fec5d329c06b75718d (diff)
downloadgcc-ddb4f387ee60618b1cb04d2143b47f808f9c9e02.zip
gcc-ddb4f387ee60618b1cb04d2143b47f808f9c9e02.tar.gz
gcc-ddb4f387ee60618b1cb04d2143b47f808f9c9e02.tar.bz2
eh_arm.cc (__cxa_type_match): Handle foreign exceptions.
* libsupc++/eh_arm.cc (__cxa_type_match): Handle foreign exceptions. * libsubpc++/eh_personality.cc: Don't try to set up foreign or forced unwind types here when using the ARM EABI unwinder. From-SVN: r125683
Diffstat (limited to 'libstdc++-v3/libsupc++/eh_personality.cc')
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index bbcc007..f1cda0c 100644
--- a/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/libstdc++-v3/libsupc++/eh_personality.cc
@@ -542,6 +542,12 @@ PERSONALITY_FUNCTION (int version,
bool saw_cleanup = false;
bool saw_handler = false;
+#ifdef __ARM_EABI_UNWINDER__
+ throw_type = ue_header;
+ if ((actions & _UA_FORCE_UNWIND)
+ || foreign_exception)
+ thrown_ptr = 0;
+#else
// During forced unwinding, match a magic exception type.
if (actions & _UA_FORCE_UNWIND)
{
@@ -556,9 +562,6 @@ PERSONALITY_FUNCTION (int version,
thrown_ptr = 0;
}
else
-#ifdef __ARM_EABI_UNWINDER__
- throw_type = ue_header;
-#else
throw_type = xh->exceptionType;
#endif