Преглед изворни кода

Make relibc_panic a weakly linked stub for crt and ld_so objects

Jeremy Soller пре 3 година
родитељ
комит
b3d71ba8ba
4 измењених фајлова са 24 додато и 12 уклоњено
  1. 6 3
      src/crt0/src/lib.rs
  2. 6 3
      src/crti/src/lib.rs
  3. 6 3
      src/crtn/src/lib.rs
  4. 6 3
      src/ld_so/src/lib.rs

+ 6 - 3
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)
 }

+ 6 - 3
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)
 }

+ 6 - 3
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)
 }

+ 6 - 3
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)
 }