From 90f934c7697d351a5972447269b48b7f0f572251 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sat, 23 Nov 2024 03:06:38 -0500 Subject: [PATCH] Exit should return never (`!`) `_Exit`, `exit`, and related functions should return `!` because they don't return. This also signals to cbindgen that it should emit `[[noreturn]]` for those functions. --- src/header/stdlib/mod.rs | 6 +++--- src/header/unistd/mod.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/header/stdlib/mod.rs b/src/header/stdlib/mod.rs index 7113530261..86852d3fe7 100644 --- a/src/header/stdlib/mod.rs +++ b/src/header/stdlib/mod.rs @@ -62,7 +62,7 @@ fn rng_sampler() -> &'static Uniform { /// See . #[no_mangle] -pub extern "C" fn _Exit(status: c_int) { +pub extern "C" fn _Exit(status: c_int) -> ! { unistd::_exit(status); } @@ -339,7 +339,7 @@ pub unsafe extern "C" fn erand48(xsubi: *mut c_ushort) -> c_double { /// See . #[no_mangle] -pub unsafe extern "C" fn exit(status: c_int) { +pub unsafe extern "C" fn exit(status: c_int) -> ! { extern "C" { static __fini_array_start: extern "C" fn(); static __fini_array_end: extern "C" fn(); @@ -1041,7 +1041,7 @@ pub unsafe extern "C" fn qsort_r( /// See . // #[no_mangle] -pub unsafe extern "C" fn quick_exit(status: c_int) { +pub unsafe extern "C" fn quick_exit(status: c_int) -> ! { unimplemented!(); } diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index 19a09373ee..9d1ba2ff2a 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -65,7 +65,7 @@ unsafe fn init_fork_hooks<'a>() -> &'a mut [LinkedList; 3] { } #[no_mangle] -pub extern "C" fn _exit(status: c_int) { +pub extern "C" fn _exit(status: c_int) -> ! { Sys::exit(status) }