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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to