From 844d60f379cd59b5d4baef33e49f7ae70ef8eeae Mon Sep 17 00:00:00 2001 From: Stephen Demos Date: Sun, 3 Jun 2018 21:05:34 -0700 Subject: [PATCH] use panic_implementation instead of panic_fmt this change was merged in rust-lang/rust#50338. --- uefi-services/src/lib.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/uefi-services/src/lib.rs b/uefi-services/src/lib.rs index 315ff8428..4e4343b01 100644 --- a/uefi-services/src/lib.rs +++ b/uefi-services/src/lib.rs @@ -12,6 +12,7 @@ #![no_std] #![feature(lang_items)] +#![feature(panic_implementation)] // These crates are required. extern crate rlibc; @@ -93,13 +94,14 @@ fn init_alloc() { #[lang = "eh_personality"] fn eh_personality() {} -#[lang = "panic_fmt"] -#[no_mangle] -pub fn panic_fmt(fmt: core::fmt::Arguments, file_line_col: &(&'static str, u32, u32)) { - let &(file, line, column) = file_line_col; - - error!("Panic in {} at ({}, {}):", file, line, column); - error!("{}", fmt); +#[panic_implementation] +fn panic_fmt(info: &core::panic::PanicInfo) -> ! { + if let Some(location) = info.location() { + error!("Panic in {} at ({}, {}):", location.file(), location.line(), location.column()); + if let Some(message) = info.message() { + error!("{}", info.message()) + } + } loop { // TODO: add a timeout then shutdown.