diff --git a/.cargo/config.toml b/.cargo/config.toml index 82d1de25..aea7314b 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,9 +1,19 @@ -# Remove this if targeting AArch64 from an AArch64 Linux box +# May need to remove these if targeting AArch64 from an AArch64 Linux box + [target.'cfg(all(target_os = "linux", target_arch = "aarch64"))'] -runner = 'qemu-aarch64' +runner = "qemu-aarch64" [target.aarch64-unknown-linux-gnu] -linker = 'aarch64-linux-gnu-gcc' +linker = "aarch64-linux-gnu-gcc" [target.aarch64-unknown-linux-musl] -linker = 'aarch64-linux-musl-gcc' +linker = "aarch64-linux-musl-gcc" +# AArch64 Linux musl targets are repeatedly affected under varying +# circumstances by fixedn't linking issues to compiler builtin symbols. +# Linking to libgcc, though arguably an inelegant hack that's only portable +# to our glibc from musl crosscompilation scenario, is effective to reliably +# provide an implementation of those fundamental symbols over time, without +# user-visible impacts on the final executables. See: +# https://github.com/rust-lang/rust/issues/46651 +# https://github.com/rust-lang/compiler-builtins/issues/201 +rustflags = ["-Clink-args=-lgcc"]