lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 13 Jan 2023 12:58:06 +0100
From:   Ard Biesheuvel <ardb@...nel.org>
To:     Lukas Bulwahn <lukas.bulwahn@...il.com>
Cc:     linux-efi@...r.kernel.org,
        Catalin Marinas <catalin.marinas@....com>,
        Jeremy Linton <jeremy.linton@....com>,
        Linux ARM <linux-arm-kernel@...ts.infradead.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: linker problem with Ubuntu 18.04 tool chain: unknown architecture
 of input file `arch/arm64/boot/vmlinuz.o' is incompatible with aarch64 output

On Fri, 13 Jan 2023 at 12:50, Lukas Bulwahn <lukas.bulwahn@...il.com> wrote:
>
> Dear Ard,
>
> with my Ubuntu 18.04 arm gcc tool chain, I encounter this linker error
> in my allyesconfig build:
>
>  LD      arch/arm64/boot/vmlinuz.efi.elf
> aarch64-linux-gnu-ld: unknown architecture of input file
> `arch/arm64/boot/vmlinuz.o' is incompatible with aarch64 output
> drivers/firmware/efi/libstub/Makefile.zboot:41: recipe for target
> 'arch/arm64/boot/vmlinuz.efi.elf' failed
> make[1]: *** [arch/arm64/boot/vmlinuz.efi.elf] Error 1
> arch/arm64/Makefile:173: recipe for target 'vmlinuz.efi' failed
> make: *** [vmlinuz.efi] Error 2
>
> I bisected it back to happen since commit c37b830fef13 ("arm64: efi:
> enable generic EFI compressed boot"), and it still appears with the
> latest next-20230113 (on linux-next, I have to remove DRM_MSM as it
> currently comes with a build error).
>
> The specific compiler and linker versions on my system are:
>
> $ aarch64-linux-gnu-ld --version
> GNU ld (GNU Binutils for Ubuntu) 2.30
>
> $ aarch64-linux-gnu-gcc --version
> aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
>
>
> IMHO, I run pretty standard commands:
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 32 mrproper
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 32 allyesconfig
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j 32 all
>
> Let me know if you need more information.
>

Hello Lukas,

This seems to mean that AArch64 ld.bfd 2.30 is not able to combine
generic ELF objects with AArch64 ELF objects. vmlinuz.o only contains
a compressed blob in an ELF data section, and more modern toolchains
have no issue with this at all.

Given that building allyesconfig with fairly outdated toolchains is
not something anyone is likely to obsess about, I don't have a strong
preference as to how we work around this, put perhaps the easiest
approach would be for CONFIG_EFI_ZBOOT to depend on !CONFIG_LD_IS_BFD
|| CONFIG_LD_VERSION >= 23xxx here? (We'll need to check the exact
version)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ