From: Markus Volk Date: Thu, 6 Aug 2026 07:22:22 +0000 (+0200) Subject: rust: patch uninative loader into snapshot's self-contained lld X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9db020032ee1f328bfab7ca7842d7725777e487e;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git rust: patch uninative loader into snapshot's self-contained lld Since Rust 1.90, rustc defaults to using the self-contained lld linker (lib/rustlib//bin/gcc-ld/ld.lld, which execs rust-lld) on x86_64-unknown-linux-gnu. https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/ This applies to the snapshot compiler used to bootstrap the target rustc, before the rust.lld/use-lld settings in the config.toml we generate for the target compiler can take effect. Without patching these too, they fail to exec on build hosts without a /lib64 compatibility path. collect2: fatal error: posix_spawnp: No such file or directory | compilation terminated. | | | error: linking with `/home/flk/bitbake/bitbake-builds/master/build/tmp/work/x86_64-linux/rust-native/1.96.1/wrapper/target-rust-ccld` failed: exit status: 1 Signed-off-by: Markus Volk Signed-off-by: Richard Purdie --- diff --git a/meta/recipes-devtools/rust/rust_1.96.1.bb b/meta/recipes-devtools/rust/rust_1.96.1.bb index 7d1761c562..82cb80a256 100644 --- a/meta/recipes-devtools/rust/rust_1.96.1.bb +++ b/meta/recipes-devtools/rust/rust_1.96.1.bb @@ -69,8 +69,12 @@ do_rust_setup_snapshot () { # Need to use uninative's loader if enabled/present since the library paths # are used internally by rust and result in symbol mismatches if we don't if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then - for bin in cargo rustc rustdoc; do - patchelf ${WORKDIR}/rust-snapshot/bin/$bin --set-interpreter ${UNINATIVE_LOADER} + for bin in ${WORKDIR}/rust-snapshot/bin/cargo \ + ${WORKDIR}/rust-snapshot/bin/rustc \ + ${WORKDIR}/rust-snapshot/bin/rustdoc \ + ${WORKDIR}/rust-snapshot/lib/rustlib/*/bin/rust-lld \ + ${WORKDIR}/rust-snapshot/lib/rustlib/*/bin/gcc-ld/*; do + [ -f "$bin" ] && patchelf "$bin" --set-interpreter ${UNINATIVE_LOADER} done fi }