From b3d71ba8ba1aa85dc3575d639ba6913f2c91e982 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 4 Aug 2021 07:20:48 -0600 Subject: [PATCH] Make relibc_panic a weakly linked stub for crt and ld_so objects --- src/crt0/src/lib.rs | 9 ++++++--- src/crti/src/lib.rs | 9 ++++++--- src/crtn/src/lib.rs | 9 ++++++--- src/ld_so/src/lib.rs | 9 ++++++--- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/crt0/src/lib.rs b/src/crt0/src/lib.rs index dd7c7e470f..3146fd6114 100644 --- a/src/crt0/src/lib.rs +++ b/src/crt0/src/lib.rs @@ -28,12 +28,15 @@ pub unsafe extern "C" fn _start() { ); } +#[linkage = "weak"] +#[no_mangle] +extern "C" fn relibc_panic(pi: &::core::panic::PanicInfo) -> ! { + loop {} +} + #[panic_handler] #[linkage = "weak"] #[no_mangle] pub unsafe extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn relibc_panic(pi: &::core::panic::PanicInfo) -> !; - } relibc_panic(pi) } diff --git a/src/crti/src/lib.rs b/src/crti/src/lib.rs index 6415b0fb7f..9ec19e013f 100644 --- a/src/crti/src/lib.rs +++ b/src/crti/src/lib.rs @@ -49,12 +49,15 @@ global_asm!( "# ); +#[linkage = "weak"] +#[no_mangle] +extern "C" fn relibc_panic(pi: &::core::panic::PanicInfo) -> ! { + loop {} +} + #[panic_handler] #[linkage = "weak"] #[no_mangle] pub unsafe extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn relibc_panic(pi: &::core::panic::PanicInfo) -> !; - } relibc_panic(pi) } diff --git a/src/crtn/src/lib.rs b/src/crtn/src/lib.rs index 22bacbb821..8d21fd4406 100644 --- a/src/crtn/src/lib.rs +++ b/src/crtn/src/lib.rs @@ -39,12 +39,15 @@ global_asm!( "# ); +#[linkage = "weak"] +#[no_mangle] +extern "C" fn relibc_panic(pi: &::core::panic::PanicInfo) -> ! { + loop {} +} + #[panic_handler] #[linkage = "weak"] #[no_mangle] pub unsafe extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn relibc_panic(pi: &::core::panic::PanicInfo) -> !; - } relibc_panic(pi) } diff --git a/src/ld_so/src/lib.rs b/src/ld_so/src/lib.rs index ec66380ac7..254b2adbdd 100644 --- a/src/ld_so/src/lib.rs +++ b/src/ld_so/src/lib.rs @@ -60,12 +60,15 @@ pub unsafe extern "C" fn main(_argc: isize, _argv: *const *const i8) -> usize { 0x1D } +#[linkage = "weak"] +#[no_mangle] +extern "C" fn relibc_panic(pi: &::core::panic::PanicInfo) -> ! { + loop {} +} + #[panic_handler] #[linkage = "weak"] #[no_mangle] pub unsafe extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn relibc_panic(pi: &::core::panic::PanicInfo) -> !; - } relibc_panic(pi) }