about summary refs log tree commit diff
path: root/src/rt
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt')
-rw-r--r--src/rt/rust_upcall.c24
-rw-r--r--src/rt/rustrt.def.in1
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