Closed
Description
Update
After #80, this only occurs with profile.dev (+debug-assertions) + LTO. To fix this we'll have to create newtypes over primitives types that intrinsics::abort()
on bad inputs (division by zero) and overflow.
Getting a funky error when attempting to use rustc-builtins
for nintendo 3DS shenanigans instead the prebuilt copy of libcompiler-rt
that we've been using up to this point:
Compiling ctru-rs v0.4.0 (https://github.com/FenrirWolf/ctru-rs?branch=builtins#27eb3caf)
Compiling rustc_builtins v0.1.0 (https://github.com/japaric/rustc-builtins.git#69e93de9)
Compiling alloc_system3ds v0.1.0 (https://github.com/rust3ds/alloc_system3ds?rev=da38c94#da38c941)
Compiling ctru-sys v0.2.0 (https://github.com/FenrirWolf/ctru-rs?branch=builtins#27eb3caf)
Compiling rust3ds-template v0.1.0 (file:///home/fenrir/projects/rust3ds-template)
error: linking with `arm-none-eabi-gcc` failed: exit code: 1
|
= note: "arm-none-eabi-gcc" "-specs=3dsx.specs" "-march=armv6k" "-mtune=mpcore" "-mfloat-abi=hard" "-mtp=soft" "-L" "/home/fenrir/.xargo/lib/rustlib/3ds/lib" "/home/fenrir/projects/rust3ds-template/target/3ds/release/rust3ds_template.0.o" "-o" "/home/fenrir/projects/rust3ds-template/target/3ds/release/rust3ds_template.elf" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "/home/fenrir/projects/rust3ds-template/target/3ds/release/deps" "-L" "/opt/devkitPro/libctru/lib" "-L" "/home/fenrir/.xargo/lib/rustlib/3ds/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/tmp/rustc.n3iL9DJW0uUT/libctru-56422efc011c55b9.rlib" "/tmp/rustc.n3iL9DJW0uUT/librustc_builtins-5c8a87f356eb958c.rlib" "-lc" "-lm" "-lsysbase" "-lc" "-lsysbase" "-lc"
= note: /tmp/rustc.n3iL9DJW0uUT/librustc_builtins-5c8a87f356eb958c.rlib(rustc_builtins-5c8a87f356eb958c.0.o): In function `__udivmodsi4':
rustc_builtins.cgu-0.rs:(.text.__udivmodsi4+0xb4): undefined reference to `core::panicking::panic::h6d47421a09de1633'
/tmp/rustc.n3iL9DJW0uUT/librustc_builtins-5c8a87f356eb958c.rlib(rustc_builtins-5c8a87f356eb958c.0.o): In function `__udivmoddi4':
rustc_builtins.cgu-0.rs:(.text.__udivmoddi4+0x304): undefined reference to `core::panicking::panic::h6d47421a09de1633'
rustc_builtins.cgu-0.rs:(.text.__udivmoddi4+0x30c): undefined reference to `core::panicking::panic::h6d47421a09de1633'
rustc_builtins.cgu-0.rs:(.text.__udivmoddi4+0x314): undefined reference to `core::panicking::panic::h6d47421a09de1633'
/tmp/rustc.n3iL9DJW0uUT/librustc_builtins-5c8a87f356eb958c.rlib(rustc_builtins-5c8a87f356eb958c.0.o): In function `__aeabi_uidiv':
rustc_builtins.cgu-0.rs:(.text.__aeabi_uidiv+0xa0): undefined reference to `core::panicking::panic::h6d47421a09de1633'
/tmp/rustc.n3iL9DJW0uUT/librustc_builtins-5c8a87f356eb958c.rlib(rustc_builtins-5c8a87f356eb958c.0.o):rustc_builtins.cgu-0.rs:(.text.__divsi3+0x40): more undefined references to `core::panicking::panic::h6d47421a09de1633' follow
collect2: error: ld returned 1 exit status
error: aborting due to previous error
However, the error only occurs if lto = true
is set in Cargo.toml. If LTO is disabled, the result is a successful build.
Metadata
Metadata
Assignees
Labels
No labels