Closed
Description
When compiling on riscv32imac-unknown-xous-elf
, occasionally there is a linker error where the linker removes core::panicking::panic_str_nounwind::h9b449c0fe03c8dac
and then complains that the symbol does not exist. It is trying to call this function from compiler_builtins::math::libm::rem_pio2_large::rem_pio2_large::h3db6431f23a281c1
.
Building with lto="thin"
does not prune this symbol. Additionally, other crates do not have trouble, even if they call f32::sin()
or f32::cos()
which seem to use these functions.
Test code:
fn main() {
for i in 0..2 {
let x = i as f32;
println!("cosf(x): {}", x.cos());
}
}
Cargo.toml:
[package]
name = "libm_test"
version = "0.1.0"
edition = "2021"
[profile.dev]
lto = "fat"
Meta
rustc --version --verbose
:
rustc 1.66.0 (69f9c33d7 2022-12-12)
binary: rustc
commit-hash: 69f9c33d71c871fc16ac445211281c6e7a340943
commit-date: 2022-12-12
host: x86_64-pc-windows-msvc
release: 1.66.0
LLVM version: 15.0.2
Build Output
[1:43:32 pm] E:/Code/Xous/libm_test> cargo build --target riscv32imac-unknown-xous-elf
Compiling libm_test v0.1.0 (E:\Code\Xous\libm_test)
error: linking with `rust-lld` failed: exit code: 1
|
= note: "rust-lld" "-flavor" "gnu" "C:\\Users\\Sean\\AppData\\Local\\Temp\\rustcc9RUUw\\symbols.o" "E:\\Code\\Xous\\libm_test\\target\\riscv32imac-unknown-xous-elf\\debug\\deps\\libm_test-76ee56b79358e7a1.std-ebb179c122f95043.std.3da42809-cgu.0.rcgu.o.rcgu.o" "--as-needed" "-L" "E:\\Code\\Xous\\libm_test\\target\\riscv32imac-unknown-xous-elf\\debug\\deps" "-L" "E:\\Code\\Xous\\libm_test\\target\\debug\\deps" "-L" "C:\\Users\\Sean\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\riscv32imac-unknown-xous-elf\\lib" "-Bstatic" "C:\\Users\\Sean\\AppData\\Local\\Temp\\rustcc9RUUw\\libxous-22b3b9f34be0acc4.rlib" "C:\\Users\\Sean\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\riscv32imac-unknown-xous-elf\\lib\\libcompiler_builtins-b913bacb8fda1c55.rlib" "-Bdynamic" "--eh-frame-hdr" "-znoexecstack" "-L" "C:\\Users\\Sean\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\riscv32imac-unknown-xous-elf\\lib" "-o" "E:\\Code\\Xous\\libm_test\\target\\riscv32imac-unknown-xous-elf\\debug\\deps\\libm_test-76ee56b79358e7a1" "--gc-sections"
= note: rust-lld: error: undefined symbol: core::panicking::panic_str_nounwind::h9b449c0fe03c8dac
>>> referenced by compiler_builtins.22a3dcb1-cgu.13
>>> compiler_builtins-b913bacb8fda1c55.compiler_builtins.22a3dcb1-cgu.13.rcgu.o:(compiler_builtins::math::libm::rem_pio2_large::rem_pio2_large::h3db6431f23a281c1) in archive C:\Users\Sean\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\riscv32imac-unknown-xous-elf\lib\libcompiler_builtins-b913bacb8fda1c55.rlib
>>> referenced by compiler_builtins.22a3dcb1-cgu.13
>>> compiler_builtins-b913bacb8fda1c55.compiler_builtins.22a3dcb1-cgu.13.rcgu.o:(compiler_builtins::math::libm::rem_pio2_large::rem_pio2_large::h3db6431f23a281c1) in archive C:\Users\Sean\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\riscv32imac-unknown-xous-elf\lib\libcompiler_builtins-b913bacb8fda1c55.rlib
error: could not compile `libm_test` due to previous error
[1:43:40 pm] E:/Code/Xous/libm_test>