diff options
Diffstat (limited to 'libgo/runtime/go-unwind.c')
-rw-r--r-- | libgo/runtime/go-unwind.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libgo/runtime/go-unwind.c b/libgo/runtime/go-unwind.c index ad3142c..16e0525 100644 --- a/libgo/runtime/go-unwind.c +++ b/libgo/runtime/go-unwind.c @@ -59,20 +59,22 @@ void rethrowException () { struct _Unwind_Exception *hdr; + _Unwind_Reason_Code reason; hdr = (struct _Unwind_Exception *) runtime_g()->exception; #ifdef __USING_SJLJ_EXCEPTIONS__ - _Unwind_SjLj_Resume_or_Rethrow (hdr); + reason = _Unwind_SjLj_Resume_or_Rethrow (hdr); #else #if defined(_LIBUNWIND_STD_ABI) - _Unwind_RaiseException (hdr); + reason = _Unwind_RaiseException (hdr); #else - _Unwind_Resume_or_Rethrow (hdr); + reason = _Unwind_Resume_or_Rethrow (hdr); #endif #endif /* Rethrowing the exception should not return. */ + runtime_printf ("failed to rethrow unwind exception (reason=%d)\n", reason); abort(); } @@ -105,6 +107,7 @@ throwException () { struct _Unwind_Exception *hdr; uintptr align; + _Unwind_Reason_Code reason; hdr = (struct _Unwind_Exception *)runtime_g ()->exception; @@ -119,12 +122,13 @@ throwException () hdr->exception_cleanup = NULL; #ifdef __USING_SJLJ_EXCEPTIONS__ - _Unwind_SjLj_RaiseException (hdr); + reason = _Unwind_SjLj_RaiseException (hdr); #else - _Unwind_RaiseException (hdr); + reason = _Unwind_RaiseException (hdr); #endif /* Raising an exception should not return. */ + runtime_printf ("failed to throw unwind exception (reason=%d)\n", reason); abort (); } |