diff --git a/lib/emscripten/src/exception.rs b/lib/emscripten/src/exception.rs index 09ae286f813..74c83437890 100644 --- a/lib/emscripten/src/exception.rs +++ b/lib/emscripten/src/exception.rs @@ -32,6 +32,7 @@ pub fn ___cxa_rethrow_primary_exception(_ctx: &mut Ctx, _a: u32) { /// TODO: We don't have support for exceptions yet pub fn ___cxa_throw(ctx: &mut Ctx, _ptr: u32, _ty: u32, _destructor: u32) { debug!("emscripten::___cxa_throw"); + eprintln!("Throwing exceptions not yet implemented: aborting!"); _abort(ctx); } diff --git a/lib/emscripten/src/lib.rs b/lib/emscripten/src/lib.rs index 7dc808bde2b..49767708bbe 100644 --- a/lib/emscripten/src/lib.rs +++ b/lib/emscripten/src/lib.rs @@ -731,7 +731,7 @@ pub fn generate_emscripten_env(globals: &mut EmscriptenGlobals) -> ImportObject "___syscall345" => func!(crate::syscalls::___syscall345), // Process - "abort" => func!(crate::process::_abort), + "abort" => func!(crate::process::em_abort), "_abort" => func!(crate::process::_abort), "_prctl" => func!(crate::process::_prctl), "abortStackOverflow" => func!(crate::process::abort_stack_overflow), diff --git a/lib/emscripten/src/process.rs b/lib/emscripten/src/process.rs index a776734b454..7592e070822 100644 --- a/lib/emscripten/src/process.rs +++ b/lib/emscripten/src/process.rs @@ -13,6 +13,13 @@ pub fn abort_with_message(ctx: &mut Ctx, message: &str) { _abort(ctx); } +/// The name of this call is `abort` but we want to avoid conflicts with libc::abort +pub fn em_abort(ctx: &mut Ctx, arg: u32) { + debug!("emscripten::abort"); + eprintln!("Program aborted with value {}", arg); + _abort(ctx); +} + pub fn _abort(_ctx: &mut Ctx) { debug!("emscripten::_abort"); unsafe {