diff options
author | Mark Wielaard <mjw@redhat.com> | 2014-01-04 14:24:58 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2014-01-04 14:25:02 +0100 |
commit | 4f1c96d8809a2ccbfd7d54bbca9a3a0c1e5f2796 (patch) | |
tree | b87655f497a4acd707be071e221a494417b898fe | |
parent | 70db4cc41d7e0516aecc477fd6aab2ba693029af (diff) |
tests: Simplify backtrace-dwarf (gcc cleanup-13.c) testcase.
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@redhat.com>
-rw-r--r-- | tests/ChangeLog | 6 | ||||
-rw-r--r-- | tests/cleanup-13.c | 24 |
2 files changed, 9 insertions, 21 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index c68ae26c..63692e3d 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2014-01-04 Mark Wielaard <mjw@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@redhat.com> * run-addrcfi.sh: Add case for EM_AARCH64. diff --git a/tests/cleanup-13.c b/tests/cleanup-13.c index b87c6965..3919b91a 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 (); } |