diff --git a/src/header/assert/mod.rs b/src/header/assert/mod.rs index 208d9019ae..d3f9f78743 100644 --- a/src/header/assert/mod.rs +++ b/src/header/assert/mod.rs @@ -20,5 +20,5 @@ pub unsafe extern "C" fn __assert_fail( eprintln!("{}: {}:{}: Assertion `{}` failed.", func, file, line, cond); - core::intrinsics::abort(); + crate::header::stdlib::abort(); } diff --git a/src/header/stdlib/mod.rs b/src/header/stdlib/mod.rs index 96f9611aa9..62d59a7d48 100644 --- a/src/header/stdlib/mod.rs +++ b/src/header/stdlib/mod.rs @@ -117,7 +117,8 @@ pub unsafe extern "C" fn a64l(s: *const c_char) -> c_long { #[unsafe(no_mangle)] pub unsafe extern "C" fn abort() -> ! { log::error!("Abort"); - intrinsics::abort(); + crate::header::signal::raise(crate::header::signal::redox::SIGABRT as c_int); + _Exit(128 + crate::header::signal::redox::SIGABRT as c_int); } #[cfg(not(target_pointer_width = "64"))] diff --git a/src/lib.rs b/src/lib.rs index ea853da6e4..2bf6b04fe3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -69,7 +69,7 @@ pub extern "C" fn relibc_panic(pi: &::core::panic::PanicInfo) -> ! { let mut w = platform::FileWriter::new(2); let _ = w.write_fmt(format_args!("RELIBC PANIC: {}\n", pi)); - core::intrinsics::abort(); + crate::header::stdlib::abort(); } #[cfg(not(test))] @@ -100,7 +100,7 @@ pub extern "C" fn rust_oom(layout: ::core::alloc::Layout) -> ! { layout.align() )); - core::intrinsics::abort(); + crate::header::stdlib::abort(); } #[cfg(not(test))] @@ -113,5 +113,5 @@ pub extern "C" fn _Unwind_Resume() -> ! { let mut w = platform::FileWriter::new(2); let _ = w.write_str("_Unwind_Resume\n"); - core::intrinsics::abort(); + crate::header::stdlib::abort(); } diff --git a/src/start.rs b/src/start.rs index 63d404607b..52b5bc20f4 100644 --- a/src/start.rs +++ b/src/start.rs @@ -78,7 +78,7 @@ unsafe fn copy_string_array(array: *const *const c_char, len: usize) -> Vec<*mut #[unsafe(no_mangle)] pub unsafe fn relibc_verify_host() { if !Sys::verify() { - intrinsics::abort(); + stdlib::abort(); } } #[unsafe(link_section = ".init_array")]