[PATCH v2] x86: Discard .note.gnu.property sections

Bin Meng bmeng.cn at gmail.com
Mon Jun 21 04:23:16 CEST 2021


On Fri, Jun 18, 2021 at 3:09 PM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> When switching to kernel.org x86_64 gcc 11.1.0 toolchain, u-boot.rom
> built from qemu-x86_defconfig no longer boots anymore. Investigation
> shows that U-Boot fails at a very early stage during the boot process,
> in fdtdec_prepare_fdt() where fdt_check_header() complains that there
> is not a valid device tree found at gd->fdt_blob which points to _end.
> Now _end points to an allocated section .note.gnu.property which of
> course is wrong.
>
> This issue is however not seen when using the default Ubuntu 20.04 gnu
> toolchain (gcc 9.3.0 with binutils 2.34). Further investigation shows
> that it is caused by a behavior change of binutils v2.36 which is part
> of the kernel.org gcc 11.1.0 toolchain, via the following commit:
>
>   939b95c77bf2 ("Linux/x86: Configure gas with --enable-x86-used-note by default")
>
> In fact, there was already a regression bug report [1] for binutils two
> months ago, but the binutils folks did not think it is a bug :(
>
> To resolve this, there are several options:
>
> * pass -Wa,-mx86-used-note=no to gas
> * pass -R .note.gnu.property to objcopy
> * discard the section in the linker script
>
> Linux kernel uses the discard way [2], so let's do the same for U-Boot.
>
> [1] https://sourceware.org/bugzilla/show_bug.cgi?id=27753
> [2] commit 4caffe6a28d3 ("x86/vdso: Discard .note.gnu.property sections in vDSO")
>
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> Reviewed-by: Tom Rini <trini at konsulko.com>
>
> ---
>
> Changes in v2:
> - add the same change to u-boot-spl.lds and u-boot-64.lds
>
>  arch/x86/cpu/u-boot-64.lds  | 1 +
>  arch/x86/cpu/u-boot-spl.lds | 1 +
>  arch/x86/cpu/u-boot.lds     | 1 +
>  3 files changed, 3 insertions(+)
>

applied to u-boot-x86, thanks!


More information about the U-Boot mailing list