diff mbox series

[v2,5/5] rust-cross-canadian: fix cargo run failure for target in sdk

Message ID 20250915102750.3298492-5-Harish.Sadineni@windriver.com
State New
Headers show
Series [v2,1/5] Revert "rust: remove redundant cargo config file" | expand

Commit Message

Sadineni, Harish Sept. 15, 2025, 10:27 a.m. UTC
From: Harish Sadineni <Harish.Sadineni@windriver.com>

In sdk while running "cargo run --target <target-name>" command
fails due to follwing errors:

for x86_64:
target/x86_64-poky-linux-gnu/debug/hell: symbol lookup error: /poky/build/tmp/
deploy/sdk/sdk/sysroots/x86_64-pokysdk-linux/usr/bin/../../lib/libc.so.6:
undefined symbol: __tunable_is_initialized, version GLIBC_PRIVATE

for arm64:
qemu-aarch64-static: Could not open '/lib/ld-linux-aarch64.so.1': No such file
or directory

This chnage fixes cargo run failure for target in sdk

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/recipes-devtools/rust/rust-cross-canadian.inc | 10 ++++++++++
 1 file changed, 10 insertions(+)
diff mbox series

Patch

diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index 87373bcb7f..200ab7eff6 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -59,6 +59,15 @@  do_install () {
 
     cat <<- EOF > "${RUST_ENV_SETUP_SH}"
 	export RUST_TARGET_SYS_VALUE="${RUST_TARGET_SYS}"
+	case "\${RUST_TARGET_SYS_VALUE}" in
+	*x86_64*)   SDKLOADER="ld-linux-x86-64.so.2" ;;
+	*i686*)     SDKLOADER="ld-linux.so.2" ;;
+	*aarch64*)  SDKLOADER="ld-linux-aarch64.so.1" ;;
+	*arm*)      SDKLOADER="ld-linux-armhf.so.3" ;;
+	*ppc64le*)  SDKLOADER="ld64.so.2" ;;
+	*riscv64*)  SDKLOADER="ld-linux-riscv64-lp64d.so.1" ;;
+	*)          SDKLOADER="" ;;
+	esac
 	if echo "\$RUST_TARGET_SYS_VALUE" | grep -qE '(32)'; then
 	    LIBDIR="lib"    # For 32-bit targets
 	else
@@ -67,6 +76,7 @@  do_install () {
 	LIB_PATH="\$OECORE_TARGET_SYSROOT/usr/\${LIBDIR}/rustlib/${RUST_TARGET_SYS}/lib"
 	export CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L \$LIB_PATH"
 	export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+	export CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUNNER="\$OECORE_TARGET_SYSROOT/\${LIBDIR}/\${SDKLOADER} --library-path \$OECORE_TARGET_SYSROOT/\${LIBDIR}"
 	EOF
 
     chown -R root.root ${D}