Open jbg opened 3 years ago
I believe this is related to https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1802783.html
A workaround could be for libgit2-sys
to build libgit2
with -mno-outline-atomics
on aarch64-unknown-linux-musl
, although it seems like this should be resolved in musl or musl-gcc.
I can confirm that CFLAGS=-mno-outline-atomics
solves the linker errors.
@jbg how did you mange to pass CFLAGS=-mno-outline-atomics. I've been trying for the bast few hours to fix this. I even opened an issue here #758
@tami5 I just set the environment variable as indicated – if it doesn't work similarly for you, you might have a slightly different issue.
This also solves the issue experienced when installing cargo-update crate in Termux.
This will be fixed by https://github.com/rust-lang/rust/pull/102579 (specifically the compiler-builtins
update).
https://github.com/rust-lang/rust/pull/113269 has landed :)
@jyn514 I still get various linking errors on aarch64-unknown-linux-musl with the latest nightly (rustc 1.72.0-nightly (cb80ff132 2023-07-07)):
= note: /usr/lib/gcc/aarch64-alpine-linux-musl/12.2.1/../../../../aarch64-alpine-linux-musl/bin/ld: /root/.rustup/toolchains/nightly-aarch64-unknown-linux-musl/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-62c49e978c93efe6.rlib(45c91108d938afe8-cpu_model.o): in function `init_have_lse_atomics':
/cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.91/./lib/builtins/cpu_model.c:1051: undefined reference to `getauxval'
/usr/lib/gcc/aarch64-alpine-linux-musl/12.2.1/../../../../aarch64-alpine-linux-musl/bin/ld: /root/.rustup/toolchains/nightly-aarch64-unknown-linux-musl/lib/rustlib/aarch64-unknown-linux-musl/lib/libcompiler_builtins-62c49e978c93efe6.rlib(45c91108d938afe8-cpu_model.o): in function `init_cpu_features':
/cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.91/./lib/builtins/cpu_model.c:1344: undefined reference to `getauxval'
/usr/lib/gcc/aarch64-alpine-linux-musl/12.2.1/../../../../aarch64-alpine-linux-musl/bin/ld: /cargo/registry/src/index.crates.io-6f17d22bba15001f/compiler_builtins-0.1.91/./lib/builtins/cpu_model.c:1345: undefined reference to `getauxval'
collect2: error: ld returned 1 exit status
= note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
= note: use the `-l` flag to specify native libraries to link
= note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)
This system has musl-1.2.4-r0.
Is there something I'm missing?
https://github.com/rust-lang/rust/issues/89626#issuecomment-1642423512 contains my investigation and some workarounds.
Note: not cross-compiling, building on
aarch64-unknown-linux-musl
foraarch64-unknown-linux-musl
.Attempting to build any crate that depends on
libgit2-sys
onaarch64-unknown-linux-musl
gives link errors about undefined references to__aarch64_ldadd4_acq_rel
,__aarch64_swp8_acq_rel
,__aarch64_cas8_acq_rel
, etc:Docker image
docker.io/library/rust:1.52-alpine3.13
on an arm64 machine can be used to easily reproduce.