diff options
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust_upcall.c | 24 | ||||
| -rw-r--r-- | src/rt/rustrt.def.in | 1 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/rt/rust_upcall.c b/src/rt/rust_upcall.c index 16621d29d4a..bda0898ca5c 100644 --- a/src/rt/rust_upcall.c +++ b/src/rt/rust_upcall.c @@ -25,14 +25,24 @@ typedef int _Unwind_Action; struct _Unwind_Context; struct _Unwind_Exception; -#ifdef __SEH__ -# define PERSONALITY_FUNC __gxx_personality_seh0 +#if __USING_SJLJ_EXCEPTIONS__ +# define PERSONALITY_FUNC __gxx_personality_sj0 #else -# ifdef __USING_SJLJ_EXCEPTIONS__ -# define PERSONALITY_FUNC __gxx_personality_sjlj -# else -# define PERSONALITY_FUNC __gxx_personality_v0 -# endif +# ifdef __SEH__ +# define PERSONALITY_FUNC __gxx_personality_seh0 +# else +# define PERSONALITY_FUNC __gxx_personality_v0 +# endif +#endif + +#if __USING_SJLJ_EXCEPTIONS__ +void _Unwind_SjLj_Resume(struct _Unwind_Exception* exception_object); + +void _Unwind_Resume(struct _Unwind_Exception* exception_object) { + _Unwind_SjLj_Resume(exception_object); +} +#else +extern void _Unnwind_Resume(struct _Unwind_Exception* exception_object); #endif _Unwind_Reason_Code diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index 2a3e687ee55..53ce2067421 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -49,3 +49,4 @@ rust_get_test_int rust_pthread_mutex_t_size rust_pthread_cond_t_size rust_crit_section_size +_Unwind_Resume |
