sdk-files/files/relocate-sdk.sh: find only ELF executable before apply patchelf

Message ID 20240830061353.841518-1-srinuvasan.a@siemens.com
State Accepted, archived
Headers show
Series sdk-files/files/relocate-sdk.sh: find only ELF executable before apply patchelf | expand

Commit Message

Arjunan, Srinu Aug. 30, 2024, 6:13 a.m. UTC
From: Srinuvasan A <srinuvasan.a@siemens.com>

With the present implementation find statemnt return the regular
executable files under bin,sbin and usr/lib/gcc* which contains the
script files as well.

Actually we are tuning interp and rpath only for ELF executable, hence
added additional condition in the find statement to return only ELF
executable.

With this change we are avoiding unncessarily checking the interpreter
for non ELF executable files.

Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
---
 meta/recipes-devtools/sdk-files/files/relocate-sdk.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jan Kiszka Aug. 30, 2024, 6:29 a.m. UTC | #1
On 30.08.24 08:13, srinuvasan.a@siemens.com wrote:
> From: Srinuvasan A <srinuvasan.a@siemens.com>
> 
> With the present implementation find statemnt return the regular

"statement"

> executable files under bin,sbin and usr/lib/gcc* which contains the
> script files as well.
> 
> Actually we are tuning interp and rpath only for ELF executable, hence
> added additional condition in the find statement to return only ELF
> executable.
> 
> With this change we are avoiding unncessarily checking the interpreter
> for non ELF executable files.
> 

"unnecessarily"

Just for clarity: Is this an optimization or a bug fix?

Thanks,
Jan

> Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
> ---
>  meta/recipes-devtools/sdk-files/files/relocate-sdk.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> index 82f63b30..e02e71f4 100755
> --- a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> +++ b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> @@ -27,7 +27,7 @@ fi
>  
>  echo -n "Adjusting path of SDK to '${new_sdkroot}'... "
>  
> -for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin ${sdkroot}/usr/lib/gcc* -executable -type f); do
> +for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin ${sdkroot}/usr/lib/gcc* -executable -type f -exec file {} \; | grep ELF | awk -F ':' '{ print $1 }'); do
>  	interpreter=$(patchelf --print-interpreter ${binary} 2>/dev/null)
>  	oldpath=${interpreter%/lib*/ld-linux*}
>  	interpreter=${interpreter#${oldpath}}
Srinuvasan Arjunan Aug. 30, 2024, 6:38 a.m. UTC | #2
On Fri, Aug 30, 2024 at 11:59 AM 'Jan Kiszka' via isar-users <
isar-users@googlegroups.com> wrote:

> On 30.08.24 08:13, srinuvasan.a@siemens.com wrote:
> > From: Srinuvasan A <srinuvasan.a@siemens.com>
> >
> > With the present implementation find statemnt return the regular
>
> "statement"
>
> > executable files under bin,sbin and usr/lib/gcc* which contains the
> > script files as well.
> >
> > Actually we are tuning interp and rpath only for ELF executable, hence
> > added additional condition in the find statement to return only ELF
> > executable.
> >
> > With this change we are avoiding unncessarily checking the interpreter
> > for non ELF executable files.
> >
>
> "unnecessarily"
>
> Just for clarity: Is this an optimization or a bug fix?
>
> Thanks,
> Jan
>

   This is the optimization i would say

   Thanks,
    Srinu

>
> > Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
> > ---
> >  meta/recipes-devtools/sdk-files/files/relocate-sdk.sh | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> > index 82f63b30..e02e71f4 100755
> > --- a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> > +++ b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> > @@ -27,7 +27,7 @@ fi
> >
> >  echo -n "Adjusting path of SDK to '${new_sdkroot}'... "
> >
> > -for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin
> ${sdkroot}/usr/lib/gcc* -executable -type f); do
> > +for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin
> ${sdkroot}/usr/lib/gcc* -executable -type f -exec file {} \; | grep ELF |
> awk -F ':' '{ print $1 }'); do
> >       interpreter=$(patchelf --print-interpreter ${binary} 2>/dev/null)
> >       oldpath=${interpreter%/lib*/ld-linux*}
> >       interpreter=${interpreter#${oldpath}}
>
> --
> Siemens AG, Technology
> Linux Expert Center
>
> --
> You received this message because you are subscribed to the Google Groups
> "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/isar-users/87190d5e-7741-43ce-9a91-9bf7f4278496%40siemens.com
> .
>
Srinuvasan Arjunan Sept. 4, 2024, 1:57 a.m. UTC | #3
On Friday, August 30, 2024 at 12:08:18 PM UTC+5:30 Srinuvasan Arjunan wrote:

On Fri, Aug 30, 2024 at 11:59 AM 'Jan Kiszka' via isar-users <
isar-...@googlegroups.com> wrote:

On 30.08.24 08:13, srinuv...@siemens.com wrote:
> From: Srinuvasan A <srinuv...@siemens.com>
> 
> With the present implementation find statemnt return the regular

"statement"

> executable files under bin,sbin and usr/lib/gcc* which contains the
> script files as well.
> 
> Actually we are tuning interp and rpath only for ELF executable, hence
> added additional condition in the find statement to return only ELF
> executable.
> 
> With this change we are avoiding unncessarily checking the interpreter
> for non ELF executable files.
> 

"unnecessarily"

Just for clarity: Is this an optimization or a bug fix?

Thanks,
Jan


   This is the optimization i would say

   Thanks,
    Srinu 


> Signed-off-by: Srinuvasan A <srinuv...@siemens.com>
> ---
>  meta/recipes-devtools/sdk-files/files/relocate-sdk.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh 
b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> index 82f63b30..e02e71f4 100755
> --- a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> +++ b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> @@ -27,7 +27,7 @@ fi
>  
>  echo -n "Adjusting path of SDK to '${new_sdkroot}'... "
>  
> -for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin 
${sdkroot}/usr/lib/gcc* -executable -type f); do
> +for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin 
${sdkroot}/usr/lib/gcc* -executable -type f -exec file {} \; | grep ELF | 
awk -F ':' '{ print $1 }'); do
>       interpreter=$(patchelf --print-interpreter ${binary} 2>/dev/null)
>       oldpath=${interpreter%/lib*/ld-linux*}
>       interpreter=${interpreter#${oldpath}}
Uladzimir Bely Sept. 6, 2024, 5:58 a.m. UTC | #4
On Fri, 2024-08-30 at 11:43 +0530, srinuvasan.a via isar-users wrote:
> From: Srinuvasan A <srinuvasan.a@siemens.com>
> 
> With the present implementation find statemnt return the regular
> executable files under bin,sbin and usr/lib/gcc* which contains the
> script files as well.
> 
> Actually we are tuning interp and rpath only for ELF executable,
> hence
> added additional condition in the find statement to return only ELF
> executable.
> 
> With this change we are avoiding unncessarily checking the
> interpreter
> for non ELF executable files.
> 
> Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
> ---
>  meta/recipes-devtools/sdk-files/files/relocate-sdk.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> index 82f63b30..e02e71f4 100755
> --- a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> +++ b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
> @@ -27,7 +27,7 @@ fi
>  
>  echo -n "Adjusting path of SDK to '${new_sdkroot}'... "
>  
> -for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin
> ${sdkroot}/usr/lib/gcc* -executable -type f); do
> +for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin
> ${sdkroot}/usr/lib/gcc* -executable -type f -exec file {} \; | grep
> ELF | awk -F ':' '{ print $1 }'); do
>  	interpreter=$(patchelf --print-interpreter ${binary}
> 2>/dev/null)
>  	oldpath=${interpreter%/lib*/ld-linux*}
>  	interpreter=${interpreter#${oldpath}}
> -- 
> 2.34.1
> 

Applied to next (mentioned typos in commit message corrected), thanks.

Patch

diff --git a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
index 82f63b30..e02e71f4 100755
--- a/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
+++ b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh
@@ -27,7 +27,7 @@  fi
 
 echo -n "Adjusting path of SDK to '${new_sdkroot}'... "
 
-for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin ${sdkroot}/usr/lib/gcc* -executable -type f); do
+for binary in $(find ${sdkroot}/usr/bin ${sdkroot}/usr/sbin ${sdkroot}/usr/lib/gcc* -executable -type f -exec file {} \; | grep ELF | awk -F ':' '{ print $1 }'); do
 	interpreter=$(patchelf --print-interpreter ${binary} 2>/dev/null)
 	oldpath=${interpreter%/lib*/ld-linux*}
 	interpreter=${interpreter#${oldpath}}