diff --git a/src/libcore/panicking.rs b/src/libcore/panicking.rs index 8a6ab99c65a3c..4833194be37ac 100644 --- a/src/libcore/panicking.rs +++ b/src/libcore/panicking.rs @@ -6,8 +6,7 @@ //! interface for panicking is: //! //! ``` -//! # use std::fmt; -//! fn panic_impl(fmt: fmt::Arguments, file_line_col: &(&'static str, u32, u32)) -> ! +//! fn panic_impl(pi: &core::panic::PanicInfo<'_>) -> ! //! # { loop {} } //! ``` //! @@ -35,7 +34,7 @@ use crate::panic::{Location, PanicInfo}; // never inline unless panic_immediate_abort to avoid code // bloat at the call sites as much as possible #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic"] +#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators pub fn panic(expr: &str, location: &Location<'_>) -> ! { if cfg!(feature = "panic_immediate_abort") { unsafe { super::intrinsics::abort() } @@ -52,7 +51,7 @@ pub fn panic(expr: &str, location: &Location<'_>) -> ! { #[cold] #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic_bounds_check"] +#[lang = "panic_bounds_check"] // needed by codegen for panic on OOB array/slice access fn panic_bounds_check(location: &Location<'_>, index: usize, len: usize) -> ! { if cfg!(feature = "panic_immediate_abort") { unsafe { super::intrinsics::abort() } diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index f76969146fdd2..6819a4a04d737 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -44,6 +44,8 @@ extern { data: *mut u8, data_ptr: *mut usize, vtable_ptr: *mut usize) -> u32; + + /// `payload` is actually a `*mut &mut dyn BoxMeUp` but that would cause FFI warnings. #[unwind(allowed)] fn __rust_start_panic(payload: usize) -> u32; } @@ -294,7 +296,7 @@ pub fn panicking() -> bool { update_panic_count(0) != 0 } -/// Entry point of panic from the libcore crate. +/// Entry point of panic from the libcore crate (`panic_impl` lang item). #[cfg(not(test))] #[panic_handler] #[unwind(allowed)] @@ -380,7 +382,7 @@ fn continue_panic_fmt(info: &PanicInfo<'_>) -> ! { #[unstable(feature = "libstd_sys_internals", reason = "used by the panic! macro", issue = "0")] -#[cfg_attr(not(test), lang = "begin_panic")] +#[cfg_attr(not(test), lang = "begin_panic")] // lang item for CTFE panic support // never inline unless panic_immediate_abort to avoid code // bloat at the call sites as much as possible #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))]