From c1b8c3b4cfd4ff6a711c0502cbc20d29c500ea8d Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Sun, 28 Jun 2026 04:17:35 +0300 Subject: [PATCH] abort: fix unsafe-op-in-unsafe-fn, signal path, unused imports - abort() body: use signal::sys::SIGABRT (the platform-independent name the signal module uses for both linux and redox submodules) - call sites: wrap abort() in unsafe { } blocks (Rust 2024 edition's unsafe_op_in_unsafe_fn lint makes this mandatory inside unsafe fns) - stdlib/mod.rs, start.rs: drop now-unused 'intrinsics' import --- src/header/assert/mod.rs | 2 +- src/header/stdlib/mod.rs | 6 +++--- src/lib.rs | 6 +++--- src/start.rs | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/header/assert/mod.rs b/src/header/assert/mod.rs index d3f9f78743..e748b3b004 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); - crate::header::stdlib::abort(); + unsafe { crate::header::stdlib::abort() }; } diff --git a/src/header/stdlib/mod.rs b/src/header/stdlib/mod.rs index 62d59a7d48..f64e2b206c 100644 --- a/src/header/stdlib/mod.rs +++ b/src/header/stdlib/mod.rs @@ -2,7 +2,7 @@ //! //! See . -use core::{convert::TryFrom, intrinsics, iter, mem, ptr, slice}; +use core::{convert::TryFrom, iter, mem, ptr, slice}; use rand::{ RngExt, SeedableRng, distr::{Alphanumeric, Distribution, Uniform}, @@ -117,8 +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"); - crate::header::signal::raise(crate::header::signal::redox::SIGABRT as c_int); - _Exit(128 + crate::header::signal::redox::SIGABRT as c_int); + crate::header::signal::raise(crate::header::signal::sys::SIGABRT as c_int); + _Exit(128 + crate::header::signal::sys::SIGABRT as c_int); } #[cfg(not(target_pointer_width = "64"))] diff --git a/src/lib.rs b/src/lib.rs index 2bf6b04fe3..f41627985e 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)); - crate::header::stdlib::abort(); + unsafe { crate::header::stdlib::abort() }; } #[cfg(not(test))] @@ -100,7 +100,7 @@ pub extern "C" fn rust_oom(layout: ::core::alloc::Layout) -> ! { layout.align() )); - crate::header::stdlib::abort(); + unsafe { 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"); - crate::header::stdlib::abort(); + unsafe { crate::header::stdlib::abort() }; } diff --git a/src/start.rs b/src/start.rs index 52b5bc20f4..915056e5b5 100644 --- a/src/start.rs +++ b/src/start.rs @@ -1,7 +1,7 @@ //! Startup code. use alloc::{boxed::Box, vec::Vec}; -use core::{intrinsics, ptr}; +use core::ptr; #[cfg(target_os = "redox")] use generic_rt::ExpectTlsFree; @@ -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() { - stdlib::abort(); + unsafe { stdlib::abort() }; } } #[unsafe(link_section = ".init_array")]