summaryrefslogtreecommitdiff
path: root/gcc/unwind.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-07 22:11:38 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-07 22:11:38 +0000
commitce9beb5c23c114e2a17eba595c8f4b5287022db9 (patch)
treec4966921e4085694a93888d4028afb2a1818fda4 /gcc/unwind.h
parent5ffe0a17b1a571587b922feed3f4042c7c1a62bf (diff)
downloadgcc-ce9beb5c23c114e2a17eba595c8f4b5287022db9.tar.gz
gcc/
* except.c: Revert 04-01 and 04-02 forced-unwind changes. * flags.h, toplev.c, doc/invoke.texi: Likewise. * unwind-dw2.c (_Unwind_GetCFA): Fix ptr->int conversion warning. * unwind.inc (_Unwind_DeleteException): Check for null exception_cleanup. * unwind-sjlj.c (_Unwind_SjLj_Resume_or_Rethrow): New. * unwind.inc (_Unwind_Resume_or_Rethrow): New. * unwind.h: Declare them. * libgcc-std.ver (GCC_3.3): Export them. gcc/cp/ * cfns.gperf: Comment out POSIX thread cancellation points, plus abort and raise. * cfns.h: Regenerate. gcc/testsuite/ * g++.dg/eh/forced1.C: Expect catch-all handlers to run. Verify exception_cleanup not called for rethrows. * g++.dg/eh/forced2.C: Test that exception_cleanup is called when exiting catch block without rethrowing. * g++.dg/eh/forced3.C: New. * g++.dg/eh/forced4.C: New. libstdc++-v3/ * libsupc++/eh_catch.cc (__cxa_begin_catch): Handle foreign exceptions. (__cxa_end_catch): Likewise. * libsupc++/eh_throw.cc (__cxa_rethrow): Likewise. Use _Unwind_Resume_or_Rethrow. * libsupc++/eh_personality.cc (empty_exception_spec): New. (PERSONALITY_FUNCTION): Don't ignore terminate or catch-all for _UA_FORCE_UNWIND. Honor empty filter spec for foreign exceptions. Don't push terminate/unexpected to cxa functions. (__cxa_call_unexpected): Remove foreign exception fixmes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66583 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/unwind.h')
-rw-r--r--gcc/unwind.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/unwind.h b/gcc/unwind.h
index 8f7a499330e..a0d6ab3a14b 100644
--- a/gcc/unwind.h
+++ b/gcc/unwind.h
@@ -127,6 +127,10 @@ extern void _Unwind_DeleteException (struct _Unwind_Exception *);
e.g. executing cleanup code, and not to implement rethrowing. */
extern void _Unwind_Resume (struct _Unwind_Exception *);
+/* @@@ Resume propagation of an FORCE_UNWIND exception, or to rethrow
+ a normal exception that was handled. */
+extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *);
+
/* @@@ Use unwind data to perform a stack backtrace. The trace callback
is called for every stack frame in the call chain, but no cleanup
actions are performed. */
@@ -184,6 +188,7 @@ extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
(struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *);
/* @@@ The following provide access to the base addresses for text
and data-relative addressing in the LDSA. In order to stay link