"неопределенная ссылка на` core :: panicking :: pani c '"при добавлении чисел в ржавчину без металла - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь связать 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"]

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...