Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 17519ae

Browse files
Allow ffi_unwind_calls for arch::wasm32::throw
1 parent ed11a39 commit 17519ae

File tree

1 file changed

+10
-0
lines changed
  • library/stdarch/crates/core_arch/src/wasm32

1 file changed

+10
-0
lines changed

‎library/stdarch/crates/core_arch/src/wasm32/mod.rs‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,16 @@ unsafe extern "C-unwind" {
191191
// #[cfg_attr(test, assert_instr(throw, TAG = 0, ptr = core::ptr::null_mut()))]
192192
#[inline]
193193
#[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)]
194204
pub unsafe fn throw<const TAG: i32>(ptr: *mut u8) -> ! {
195205
static_assert!(TAG == 0); // LLVM only supports tag 0 == C++ right now.
196206
wasm_throw(TAG, ptr)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /