On Fri, Jun 18, 2021 at 12:12:28AM +0800, Bin Meng 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 Reviewed-by: Tom Rini -- Tom