On Wed, Jun 24, 2020 at 05:08:56PM +0800, Shaokun Zhang wrote: > +Will Deacon, > > Hi Will, > > There's a build failure on arm64: > > CALL scripts/atomic/check-atomics.sh > CALL scripts/checksyscalls.sh > LD arch/arm64/kernel/vdso/vdso.so.dbg > ld: unrecognized option '--no-eh-frame-hdr' > ld: use the --help option for usage information > arch/arm64/kernel/vdso/Makefile:64: recipe for target > 'arch/arm64/kernel/vdso/vdso.so.dbg' failed > make[1]: *** [arch/arm64/kernel/vdso/vdso.so.dbg] Error 1 > arch/arm64/Makefile:175: recipe for target 'vdso_prepare' failed > make: *** [vdso_prepare] Error 2 > > GCC version is followed: > gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 > > It seems caused by > 87676cfca141 arm64: vdso: Disable dwarf unwinding through the sigreturn > trampoline Urgh, binutils quality strikes again. If you're able to reproduce locally, can you try the diff below, please? All the linkers I have kicking around seem to support --no-eh-frame-hdr. Will --->8 diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile index 1e5a940532da..97d3d3632093 100644 --- a/arch/arm64/kernel/vdso/Makefile +++ b/arch/arm64/kernel/vdso/Makefile @@ -23,8 +23,9 @@ btildflags-$(CONFIG_ARM64_BTI_KERNEL) += -z force-bti # potential future proofing if we end up with internal calls to the exported # routines, as x86 does (see 6f121e548f83 ("x86, vdso: Reimplement vdso.so # preparation in build-time C")). -ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ - -Bsymbolic --no-eh-frame-hdr --build-id -n $(btildflags-y) -T +ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ + -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id -n \ + $(btildflags-y) -T ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 ccflags-y += -DDISABLE_BRANCH_PROFILING