[main-line]Build warnings on PowerPC system

Christophe Leroy christophe.leroy at csgroup.eu
Fri Mar 28 22:48:53 AEDT 2025



Le 28/03/2025 à 12:14, Madhavan Srinivasan a écrit :
> 
>>>> diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
>>>> index 1db60fe13802..09ceb5a42d81 100755
>>>> --- a/arch/powerpc/boot/wrapper
>>>> +++ b/arch/powerpc/boot/wrapper
>>>> @@ -235,7 +235,7 @@ fi
>>>>    # suppress some warnings in recent ld versions
>>>>    nowarn="-z noexecstack"
>>>>    if ! ld_is_lld; then
>>>> -       if [ "$LD_VERSION" -ge "$(echo 2.39 | ld_version)" ]; then
>>>> +       if [ "$LD_VERSION" -ge "$(echo 2.35 | ld_version)" ]; then
>>>>                   nowarn="$nowarn --no-warn-rwx-segments"
>>>>           fi
>>>>    fi
>>> Above change fixes the issue. No warnings observed. Thank you!!
>>
>> Take care, this must be a special version of binutils.
>>
>> With regular 2.36.1 I get following error:
>>
>> $ /opt/gcc/gcc-8.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version
>> GNU ld (GNU Binutils) 2.36.1
>> Copyright (C) 2021 Free Software Foundation, Inc.
>> This program is free software; you may redistribute it under the terms of
>> the GNU General Public License version 3 or (at your option) a later version.
>> This program has absolutely no warranty.
>>
>> $ /opt/gcc/gcc-8.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --no-warn-rwx-segments test.o
>> /opt/gcc/gcc-8.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: unrecognized option '--no-warn-rwx-segments'
>> /opt/gcc/gcc-8.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: use the --help option for usage information
>>
> 
> Nice catch. Thanks Christophe.
> 
> May be we need to handle this special/specific case with an
> additional check
> 
> diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
> index 1db60fe13802..d3779c20e548 100755
> --- a/arch/powerpc/boot/wrapper
> +++ b/arch/powerpc/boot/wrapper
> @@ -237,6 +237,8 @@ nowarn="-z noexecstack"
>   if ! ld_is_lld; then
>          if [ "$LD_VERSION" -ge "$(echo 2.39 | ld_version)" ]; then
>                  nowarn="$nowarn --no-warn-rwx-segments"
> +        elif [ "$LD_VERSION" -eq "235020000" ]; then
> +                nowarn="$nowarn --no-warn-rwx-segments"
>          fi
>   fi
> 

I think it is not the official version of 2.35.2, it is a modified 
version from a distribution. It doesn't exist in the official 2.35.2:

$ git remote -v
origin	https://sourceware.org/git/binutils-gdb.git (fetch)
origin	https://sourceware.org/git/binutils-gdb.git (push)

$ git grep rwx-segments origin/binutils-2_35-branch
[empty]

What about doing something like commit 0d362be5b142 ("Makefile: link 
with -z noexecstack --no-warn-rwx-segments") ?

Christophe


More information about the Linuxppc-dev mailing list