File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed
library/stdarch/crates/core_arch/src/wasm32 Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -191,6 +191,16 @@ unsafe extern "C-unwind" {
191
191
// #[cfg_attr(test, assert_instr(throw, TAG = 0, ptr = core::ptr::null_mut()))]
192
192
#[ inline]
193
193
#[ unstable( feature = "wasm_exception_handling_intrinsics" , issue = "122465" ) ]
194
+ // FIXME: Since this instruction unwinds, `core` built with `-C panic=unwind`
195
+ // cannot be linked with `-C panic=abort` programs. But that's not
196
+ // entirely supported anyway, because runtimes without EH support won't
197
+ // be able to handle `try` blocks in `-C panic=unwind` crates either.
198
+ // We ship `-C panic=abort` `core`, so this doesn't affect users
199
+ // directly. Resolving this will likely require patching out both `try`
200
+ // and `throw` instructions, at which point we can look into whitelisting
201
+ // this function in the compiler to allow linking.
202
+ // See https://github.com/rust-lang/rust/issues/118168.
203
+ #[ allow( ffi_unwind_calls) ]
194
204
pub unsafe fn throw < const TAG : i32 > ( ptr : * mut u8 ) -> ! {
195
205
static_assert ! ( TAG == 0 ) ; // LLVM only supports tag 0 == C++ right now.
196
206
wasm_throw ( TAG , ptr)
You can’t perform that action at this time.
0 commit comments