FROMLIST: x86/boot: Remove run-time relocations from head_{32,64}.S
The BFD linker generates run-time relocations for z_input_len and z_output_len, even though they are absolute symbols. This is fixed for binutils-2.35 [1]. Work around this for earlier versions by defining two variables input_len and output_len in addition to the symbols, and use them via position-independent references. This eliminates the last two run-time relocations in the head code and allows us to drop the -z noreloc-overflow flag to the linker. Move the -pie and --no-dynamic-linker LDFLAGS to LDFLAGS_vmlinux instead of KBUILD_LDFLAGS. There shouldn't be anything else getting linked, but this is the more logical location for these flags, and modversions might call the linker if an EXPORT_SYMBOL is left over accidentally in one of the decompressors. [1] https://sourceware.org/bugzilla/show_bug.cgi?id=25754 Reviewed-by:Kees Cook <keescook@chromium.org> Reviewed-by:
Ard Biesheuvel <ardb@kernel.org> Reviewed-by:
Fangrui Song <maskray@google.com> Signed-off-by:
Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/lkml/20200629140928.858507-7-nivedita@alum.mit.edu Bug: 167402429 Signed-off-by:
Alistair Delva <adelva@google.com> Change-Id: Ic40c42463ec7c1d15726b39e949743bf62016b42
Loading
Please sign in to comment