From a88ec09131046233d8b4b61dbb232edb9ffeda07 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Wed, 27 Mar 2019 20:56:23 -0600 Subject: [PATCH] Prevent override of panic from relibc --- src/crt0/src/lib.rs | 12 +++--------- src/crti/src/lib.rs | 11 +++-------- src/crtn/src/lib.rs | 11 +++-------- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/crt0/src/lib.rs b/src/crt0/src/lib.rs index 1b64be4e..6b8c2552 100644 --- a/src/crt0/src/lib.rs +++ b/src/crt0/src/lib.rs @@ -2,7 +2,7 @@ #![no_std] #![feature(asm)] -#![feature(lang_items)] +#![feature(core_intrinsics)] #![feature(linkage)] #![feature(naked_functions)] @@ -29,12 +29,6 @@ pub unsafe extern "C" fn _start() { } #[panic_handler] -#[linkage = "weak"] -#[no_mangle] -pub extern "C" fn rust_begin_unwind(_pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn exit(status: i32) -> !; - } - - unsafe { exit(1) } +unsafe fn panic(_pi: &::core::panic::PanicInfo) -> ! { + ::core::intrinsics::abort(); } diff --git a/src/crti/src/lib.rs b/src/crti/src/lib.rs index eb80c7c5..4f1d7a6e 100644 --- a/src/crti/src/lib.rs +++ b/src/crti/src/lib.rs @@ -1,6 +1,7 @@ //! crti #![no_std] +#![feature(core_intrinsics)] #![feature(global_asm)] #![feature(linkage)] @@ -46,12 +47,6 @@ global_asm!(r#" "#); #[panic_handler] -#[linkage = "weak"] -#[no_mangle] -pub extern "C" fn rust_begin_unwind(_pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn exit(status: i32) -> !; - } - - unsafe { exit(1) } +unsafe fn panic(_pi: &::core::panic::PanicInfo) -> ! { + ::core::intrinsics::abort(); } diff --git a/src/crtn/src/lib.rs b/src/crtn/src/lib.rs index b0ae7584..e62acc65 100644 --- a/src/crtn/src/lib.rs +++ b/src/crtn/src/lib.rs @@ -1,6 +1,7 @@ //! crti #![no_std] +#![feature(core_intrinsics)] #![feature(global_asm)] #![feature(linkage)] @@ -36,12 +37,6 @@ global_asm!(r#" "#); #[panic_handler] -#[linkage = "weak"] -#[no_mangle] -pub extern "C" fn rust_begin_unwind(_pi: &::core::panic::PanicInfo) -> ! { - extern "C" { - fn exit(status: i32) -> !; - } - - unsafe { exit(1) } +unsafe fn panic(_pi: &::core::panic::PanicInfo) -> ! { + ::core::intrinsics::abort(); } -- GitLab