浏览代码

Update to latest nightly.

David Craven 6 年之前
父节点
当前提交
07bd42efe0
共有 2 个文件被更改,包括 14 次插入10 次删除
  1. 2 7
      riscv-rt/src/lang_items.rs
  2. 12 3
      riscv-rt/src/lib.rs

+ 2 - 7
riscv-rt/src/lang_items.rs

@@ -3,13 +3,8 @@
 use riscv::asm;
 use riscv::asm;
 
 
 /// Default panic handler
 /// Default panic handler
-#[lang = "panic_fmt"]
-unsafe extern "C" fn panic_fmt(
-    _: ::core::fmt::Arguments, // fmt
-    _: &'static str, // file
-    _: u32, // line
-    _: u32, // col
-) -> ! {
+#[panic_implementation]
+fn panic_fmt(_info: &core::panic::PanicInfo) -> ! {
     asm::ebreak();
     asm::ebreak();
     loop {}
     loop {}
 }
 }

+ 12 - 3
riscv-rt/src/lib.rs

@@ -162,13 +162,14 @@
 #![feature(asm)]
 #![feature(asm)]
 #![feature(compiler_builtins_lib)]
 #![feature(compiler_builtins_lib)]
 #![feature(const_fn)]
 #![feature(const_fn)]
+#![feature(extern_prelude)]
 #![feature(global_asm)]
 #![feature(global_asm)]
 #![feature(lang_items)]
 #![feature(lang_items)]
 #![feature(linkage)]
 #![feature(linkage)]
 #![feature(naked_functions)]
 #![feature(naked_functions)]
+#![feature(panic_implementation)]
 #![feature(used)]
 #![feature(used)]
 
 
-extern crate compiler_builtins;
 extern crate riscv;
 extern crate riscv;
 extern crate r0;
 extern crate r0;
 
 
@@ -340,7 +341,15 @@ pub extern "C" fn start_trap_rust() {
 
 
 
 
 /// Default Trap Handler
 /// Default Trap Handler
-#[used]
 #[no_mangle]
 #[no_mangle]
 #[linkage = "weak"]
 #[linkage = "weak"]
-fn trap_handler(_: mcause::Trap) {}
+pub fn trap_handler(_: mcause::Trap) {}
+
+// Make sure there is an abort when linking
+#[cfg(target_arch = "riscv")]
+global_asm!(r#"
+.section .init
+.globl abort
+abort:
+  jal zero, _start
+"#);