Re: [PATCH] x86/boot: Discard .interp sections

Borislav Petkov <[email protected]> Wed, 8 Apr 2026 11:52:02 +0200
Newsgroups org.kernel.vger.linux-toolchains,org.kernel.vger.linux-kernel
Message-ID <20260408095202.GAadYlQtQvNJ5WXFDn@fat_crate.local>
On Wed, Apr 08, 2026 at 12:39:57AM +0100, Nam Le wrote:
> With the --dynamic-linker flag added, either manually or via a
> toolchain wrapper, the ld.lld linker generates a .interp section at
> address 0x1f1 which is normally reserved for the hdr, causing an
> assertion error to occur:
> 
>     . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
> 
> This does not happen with other linkers like ld.bfd.
> 
> We can see the difference by inspecting the generated .elf file:
> 
> ld.lld:
>   Section Headers:
>   [Nr] Name       Type     Addr     Off    Size
>   [ 1] .bstext    PROGBITS 00000000 001000 0001ef
>   [ 2] .interp    PROGBITS 000001ef 0011ef 000053
>   [ 3] .header    PROGBITS 00000242 001242 00007d
> 
> ld.bfd:
>   Section Headers:
>   [Nr] Name       Type     Addr     Off    Size
>   [ 1] .bstext    PROGBITS 00000000 001000 0001ef
>   [ 2] .header    PROGBITS 000001ef 0011ef 00007d
>   [ 3] .entrytext PROGBITS 0000026c 00126c 000069
> 
> Adding .interp to the DISCARD section ensures it's not included in
> the final .elf file.
> 
> Signed-off-by: Nam Le <[email protected]>
> ---
>  arch/x86/boot/setup.ld | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
> index e1d594a60204..daffd876e94d 100644
> --- a/arch/x86/boot/setup.ld
> +++ b/arch/x86/boot/setup.ld
> @@ -61,6 +61,7 @@ SECTIONS
>  
>  	/DISCARD/	: {
>  		*(.note*)
> +		*(.interp)
>  	}
>  
>  	/*

Sounds to me like you're shooting yourself in the foot on purpose:

       --dynamic-linker=value
               Specify the dynamic linker to be used for a dynamically linked executable.
               This is recorded in an ELF segment of type PT_INTERP.

So don't do that then.

:-)

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette