rust-embedded / riscv

Low level access to RISC-V processors
818 stars 160 forks source link

`riscv-rt`: link.x expected filename pattern #202

Closed roby2014 closed 4 months ago

roby2014 commented 4 months ago

Hi. I'm trying out and mess around with a litex RISC-V CPU. So Im trying to create a demo app in rust that will be later flashed to my board. However, I'm getting this error when cargo building:

[roby@thonkpad app]$ cargo build
   Compiling app v0.1.0 (/home/roby/repos/colorlight-litex-rs/app)
error: linking with `rust-lld` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/roby/.vscode/extensions/ms-python.python-2024.4.1/python_files/deactivate/bash:/home/roby/litex/.venv/bin:/home/roby/.vscode/extensions/ms-python.python-2024.4.1/python_files/deactivate/bash:/home/roby/litex/.venv/bin:/home/roby/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/roby/.local/bin:/home/roby/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14/bin/:/home/roby/.local/bin:/home/roby/repos/colorlight-litex-rs/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14/bin/:/home/roby/.local/bin:/home/roby/repos/colorlight-litex-rs/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14/bin/" VSLANG="1033" "rust-lld" "-flavor" "gnu" "/tmp/rustcziagb6/symbols.o" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/app-7b229434c01f8ea5.2tzlhb4lit7ddpd9.rcgu.o" "--as-needed" "-L" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps" "-L" "/home/roby/repos/colorlight-litex-rs/app/target/debug/deps" "-L" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/build/app-8f27186d541e7cc6/out" "-L" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/build/riscv-rt-9b96f2b2dc0c7448/out" "-L" "/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv32i-unknown-none-elf/lib" "-Bstatic" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libriscv_rt-9c044b5575e5e546.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libriscv-73d19da890c4304a.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libembedded_hal-e36c771db9ca8996.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libvoid-ef31d3fb669da9af.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libnb-23280c6da62f7b03.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libnb-83c738390839f5f7.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libbit_field-7fe39e5de6944229.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libbare_metal-e76b1860b26e0b8f.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libr0-88cc9144b6b3efba.rlib" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/libpanic_halt-0a692546002e3952.rlib" "/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv32i-unknown-none-elf/lib/librustc_std_workspace_core-9f69ce70624d65cd.rlib" "/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv32i-unknown-none-elf/lib/libcore-1a2ac84839ac4606.rlib" "/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv32i-unknown-none-elf/lib/libcompiler_builtins-5b7e64a4538a2719.rlib" "-Bdynamic" "-z" "noexecstack" "-L" "/home/roby/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/riscv32i-unknown-none-elf/lib" "-o" "/home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/deps/app-7b229434c01f8ea5" "--gc-sections" "-Tmemory.x" "-Tlink.x"
  = note: rust-lld: error: /home/roby/repos/colorlight-litex-rs/app/target/riscv32i-unknown-none-elf/debug/build/riscv-rt-9b96f2b2dc0c7448/out/link.x:58: expected filename pattern
          >>>     (*(.trap));
          >>>     ^

error: could not compile `app` (bin "app") due to 1 previous error

Cargo.toml

[dependencies]
riscv-rt = "0.9.0"
panic-halt = "0.2.0"
litex-pac = { path = "../litex-pac" }

main.rs


#![no_std]
#![no_main]

extern crate panic_halt;

use riscv_rt::entry;

[entry]

fn main() -> ! { loop { } }


> `.cargo/config`

[target.riscv32i-unknown-none-elf] rustflags = [ "-C", "link-arg=-Tmemory.x", "-C", "link-arg=-Tlink.x", ]

[build] target = "riscv32i-unknown-none-elf"


> `build.rs`
```rs
use std::env;
use std::fs;
use std::path::PathBuf;

fn main() {
    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());

    // Put the linker script somewhere the linker can find it.
    fs::write(out_dir.join("memory.x"), include_bytes!("memory.x")).unwrap();
    println!("cargo:rustc-link-search={}", out_dir.display());
    println!("cargo:rerun-if-changed=memory.x");
    println!("cargo:rerun-if-changed=build.rs");
}

rustup version

[roby@thonkpad app]$ rustup -V
rustup 1.27.0 (bbb9276d2 2024-03-08)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.77.0 (aedd173a2 2024-03-17)`

Can I provide anything more in order to get help? Thank you

roby2014 commented 4 months ago

Upgrading riscv-rt to 0.12.0 fixed the issue 🤔