On Sun, 2022-09-04 at 22:34 +0100, Richard Purdie via lists.openembedded.org wrote: > On Sun, 2022-09-04 at 23:39 +0530, Sundeep KOKKONDA wrote: > > [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]; > > I'm a bit concerned about the fixed lengths coded here. What if there > are more than 2 arguments in CC/LD? What if one of the arguments (or > the variable) is longer than 1024? > > > + > > + strcpy(cc,getenv("LD")); > > The original code this replaces uses CC? > > > > + 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); > > + > > Where is ccargs used here (other than the first entry)?
This was getting over complicated. I'm going to try a different version of this in master-next which calls the shell wrapper from a C program which just unsets LD_LIBRARY_PATH. See master-next. Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#170297): https://lists.openembedded.org/g/openembedded-core/message/170297 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] -=-=-=-=-=-=-=-=-=-=-=-