[Yocto #14892]
This is a fix for YOCTO #14878 patch. When sheband is more than 128 characters 
the default shell /bin/sh is used to execute the linker instead of SDK shell, 
which causes problems with LD_LIBRARY_PATH.
With this patch shell usage is avoided.

Signed-off-by: Sundeep KOKKONDA <sundeep.kokko...@gmail.com>
---
 .../rust/files/target-rust-ccld.c             | 39 +++++++++++++++++++
 .../rust/rust-cross-canadian.inc              | 11 +++---
 2 files changed, 44 insertions(+), 6 deletions(-)
 create mode 100644 meta/recipes-devtools/rust/files/target-rust-ccld.c

diff --git a/meta/recipes-devtools/rust/files/target-rust-ccld.c 
b/meta/recipes-devtools/rust/files/target-rust-ccld.c
new file mode 100644
index 0000000000..13f06b38f8
--- /dev/null
+++ b/meta/recipes-devtools/rust/files/target-rust-ccld.c
@@ -0,0 +1,39 @@
+/*
+*
+* Copyright (C) 2022      Wind River Systems
+*
+* SPDX-License-Identifier: GPL-2.0-only
+*
+*/
+
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main (int argc, char *argv[])
+{
+        int i=0;
+        char cc[1024];
+        char *cmd[1024];
+        char *ccargs[2][1024];
+
+        strcpy(cc,getenv("LD"));
+        char * pch;
+        pch = strtok (cc," ");
+        while (pch != NULL)
+        {
+                strcpy(ccargs+i,pch);
+                printf ("%s\n",ccargs+i);
+                pch = strtok (NULL, " ");
+                i++;
+        }
+
+        strcpy(cmd,ccargs+0);
+
+        unsetenv("LD_LIBRARY_PATH");
+        execv(cmd,argv);
+
+return 0;
+}
+
+
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc 
b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index 7bf75a4712..375c435bff 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -7,16 +7,15 @@ LICENSE = "MIT"
 
 MODIFYTOS = "0"
 
+DEPENDS += "binutils-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+SRC_URI += "file://target-rust-ccld.c"
+
 # Need to use our SDK's sh here, see #14878
 create_sdk_wrapper () {
         file="$1"
         shift
-
-        cat <<- EOF > "${file}"
-               #!${base_prefix}/bin/sh
-               \$$1 \$@
-               EOF
-
+       ${CC} ${WORKDIR}/target-rust-ccld.c -o "${file}"
         chmod +x "$file"
 }
 
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#170290): 
https://lists.openembedded.org/g/openembedded-core/message/170290
Mute This Topic: https://lists.openembedded.org/mt/93463463/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to