[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <df656b31-d06f-4216-9e34-094e6e54b89b@linux.ibm.com>
Date: Thu, 16 Oct 2025 11:36:16 +0530
From: Vishal Chourasia <vishalc@...ux.ibm.com>
To: Nathan Chancellor <nathan@...nel.org>
Cc: Christophe Leroy <christophe.leroy@...roup.eu>, maddy@...ux.ibm.com,
linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org,
clang-built-linux@...glegroups.com,
"llvm@...ts.linux.dev" <llvm@...ts.linux.dev>
Subject: Re: [PATCH] arch/powerpc: Remove .interp section in vmlinux
On 15/10/25 23:57, Nathan Chancellor wrote:
> On Wed, Oct 15, 2025 at 09:07:54AM +0530, Vishal Chourasia wrote:
>> Hello Nathan,
>>
>> On Tue, Oct 14, 2025 at 05:21:54PM -0700, Nathan Chancellor wrote:
>>> In this bug report, you mention using LLVM=1. Does the issue happen if
>>> you use GNU ld (ld.bfd) via LD (i.e., LD=powerpc64le-linux-gnu-ld or
>>> equivalent) over ld.lld from LLVM=1? This sounds more likely to be a
>>> linker difference rather than a compiler difference.
>> Thank you for the insight.
>>
>> Yes, when using powerpc64le-linux-gnu-ld linker .interp section is not
>> emitted.
>>
>> Command:
>> $ make LLVM=1 ARCH=powerpc LD=powerpc64le-linux-gnu-ld -j 8 zImage
>> $ llvm-readelf -p .comment vmlinux
>>
>> String dump of section '.comment':
>> [ 0] clang version 22.0.0git (https://github.com/llvm/llvm-project.git 7314565281ec28b745502c3f429fd431e16673eb)
>>
>> $ llvm-readelf -p .interp vmlinux
>> llvm-readelf: warning: 'vmlinux': could not find section '.interp'
> Thanks for confirming. Does this fix the issue for you? It appears to
> work for me.
>
> Cheers,
> Nathan
>
> diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
> index de6ee7d35cff..15850296c0a9 100644
> --- a/arch/powerpc/kernel/vmlinux.lds.S
> +++ b/arch/powerpc/kernel/vmlinux.lds.S
> @@ -330,7 +330,6 @@ SECTIONS
> }
> .hash : AT(ADDR(.hash) - LOAD_OFFSET) { *(.hash) }
> .gnu.hash : AT(ADDR(.gnu.hash) - LOAD_OFFSET) { *(.gnu.hash) }
> - .interp : AT(ADDR(.interp) - LOAD_OFFSET) { *(.interp) }
> .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET)
> {
> __rela_dyn_start = .;
Hello Nathan,
It does solve the problem, but with GNU linker it would work even
without this change.
regards,
vishalc
Powered by blists - more mailing lists