The testcase originally came from GCC which was testing the runtime
unwinder using _Unwind_ForcedUnwind. Since we are using our own external
unwinder we can just abort at the right place and unwind from there.
Signed-off-by: Mark Wielaard <mjw(a)redhat.com>
---
tests/ChangeLog | 6 ++++++
tests/cleanup-13.c | 24 +++---------------------
2 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/tests/ChangeLog b/tests/ChangeLog
index c68ae26..63692e3 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-04 Mark Wielaard <mjw(a)redhat.com>
+
+ * cleanup-13.c (force_unwind_stop): Removed.
+ (force_unwind): Just call abort. Don't setup _Unwind_Exception and
+ don't call _Unwind_ForcedUnwind.
+
2014-01-03 Mark Wielaard <mjw(a)redhat.com>
* run-addrcfi.sh: Add case for EM_AARCH64.
diff --git a/tests/cleanup-13.c b/tests/cleanup-13.c
index b87c696..3919b91 100644
--- a/tests/cleanup-13.c
+++ b/tests/cleanup-13.c
@@ -283,30 +283,12 @@ extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ?
1 : -1];
: : "i" (sizeof (cfi_arch_program)))
#endif
#endif
-static _Unwind_Reason_Code
-force_unwind_stop (int version, _Unwind_Action actions,
- _Unwind_Exception_Class exc_class,
- struct _Unwind_Exception *exc_obj,
- struct _Unwind_Context *context,
- void *stop_parameter)
-{
- if (actions & _UA_END_OF_STACK)
- abort ();
- return _URC_NO_REASON;
-}
+
+/* The original GCC testcase tests the runtime unwinder using
+ _Unwind_ForcedUnwind, we just inspect the child when it aborts. */
static void force_unwind ()
{
- struct _Unwind_Exception *exc = malloc (sizeof (*exc));
- memset (&exc->exception_class, 0, sizeof (exc->exception_class));
- exc->exception_cleanup = 0;
-
-#ifndef __USING_SJLJ_EXCEPTIONS__
- _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
-#else
- _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
-#endif
-
abort ();
}
--
1.8.4.2