The arm64 boot header is mostly data. Move it to a data section to prevent objtool and other tools from trying to disassemble it. The final linked result is the same.
Signed-off-by: Josh Poimboeuf <[email protected]> --- arch/arm64/kernel/head.S | 2 +- include/asm-generic/vmlinux.lds.h | 2 +- include/linux/init.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 87a822e5c4ca..0681c6e50859 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -54,7 +54,7 @@ * that are useful before the MMU is enabled. The allocations are described * in the entry routines. */ - __HEAD + __HEADDATA /* * DO NOT MODIFY. Image header expected by Linux boot-loaders. */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index eeb070f330bd..51a0e5974f41 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -663,7 +663,7 @@ __static_call_text_end = .; /* Section used for early init (in .S files) */ -#define HEAD_TEXT KEEP(*(.head.text)) +#define HEAD_TEXT KEEP(*(.head.data .head.text)) #define HEAD_TEXT_SECTION \ .head.text : AT(ADDR(.head.text) - LOAD_OFFSET) { \ diff --git a/include/linux/init.h b/include/linux/init.h index 40331923b9f4..91e16f3205e2 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -90,6 +90,7 @@ /* For assembly routines */ #define __HEAD .section ".head.text","ax" +#define __HEADDATA .section ".head.data","aw" #define __INIT .section ".init.text","ax" #define __FINIT .previous -- 2.53.0

