From 6397008c2c295cd58a052acf9fc6411a3d68e46d Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 30 Jan 2020 09:25:54 -0800 Subject: [PATCH 2/2] x86: Discard .note.gnu.property sections in vmlinux With the command-line option, -mx86-used-note=yes, the x86 assembler in binutils 2.32 and above generates a program property note in a note section, .note.gnu.property, to encode used x86 ISAs and features. But x86 kernel linker script only contains a signle NOTE segment: PHDRS { text PT_LOAD FLAGS(5); data PT_LOAD FLAGS(6); percpu PT_LOAD FLAGS(6); init PT_LOAD FLAGS(7); note PT_NOTE FLAGS(0); } SECTIONS { ... .notes : AT(ADDR(.notes) - 0xffffffff80000000) { __start_notes = .; KEEP(*(.not e.*)) __stop_notes = .; } :text :note ... } which may not be incompatible with note.gnu.property sections. Since note.gnu.property section in kernel image is never used, this patch discards .note.gnu.property sections in kernel linker script by adding /DISCARD/ : { *(.note.gnu.property) } before .notes sections. NB: We can't discard .note.gnu.property sections by adding .note.gnu.property to default discarded sections since default discarded sections are placed AFTER .notes sections in x86 kernel linker scripts. Signed-off-by: H.J. Lu --- arch/x86/kernel/vmlinux.lds.S | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index e3296aa028fe..d1b942365d27 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -150,6 +150,11 @@ SECTIONS _etext = .; . = ALIGN(PAGE_SIZE); + /* .note.gnu.property sections should be discarded */ + /DISCARD/ : { + *(.note.gnu.property) + } + X86_ALIGN_RODATA_BEGIN RO_DATA(PAGE_SIZE) X86_ALIGN_RODATA_END -- 2.24.1