Я пытаюсь связать Rust Rlib с файлом объекта сборки, но получаю
/usr/lib/gcc/aarch64-linux-gnu/9.2.0/../../../../aarch64-linux-gnu/bin/ld: target/aarch64-none-elf/debug/librros.rlib(rros-790f5c130b3868ec.4nrjhep1ihijsfj.rcgu.o): in function `rros::io::mmio_wait':
/home/skye/rust/rros/src/io.rs:30: undefined reference to `core::panicking::panic'
Я пытался определить pani c, но ошибка не исчезнет go.
Вот некоторый код
Это обработчик pani c
// lib.rs
#[panic_handler]
extern fn panic(_info: &PanicInfo) -> ! {
loop { }
}
Это фрагмент файла, который вызывает ошибку
// io.rs
pub fn mmio_wait(count: u32) {
let mut i: u32 = 0;
while i < count {
unsafe {
asm!("mov w0, w0");
}
i = i + 1; // Line causing the error
}
}
Это файл сборки, который я пытаюсь связать
// boot.S
.section ".text.boot"
.global _start
_start:
// read cpu id, stop slave cores
mrs x1, mpidr_el1
and x1, x1, #3
cbz x1, 2f
// cpu id > 0, stop
1: wfe
b 1b
2: // cpu id == 0
// set stack before our code
ldr x1, =_start
mov sp, x1
// clear bss
ldr x1, =__bss_start
ldr w2, =__bss_size
3: cbz w2, 4f
str xzr, [x1], #8
sub w2, w2, #1
cbnz w2, 3b
// jump to C code, should not return
4: bl kmain
// for failsafe, halt this core too
b 1b
# Cargo.toml
[package]
name = "rros"
version = "0.1.0"
authors = ["Redacted"]
edition = "2018"
[profile.dev]
panic = "abort"
[profile.release]
panic = "abort"
[dependencies.lazy_static]
version = "1.0.0"
features = ["spin_no_std"]
Спасибо за помощь!