On Tue, Mar 11, 2025 at 11:37:59AM +0100, Ard Biesheuvel wrote:
There are many occurrences of
ffffffff8373cb87: 49 c7 c6 20 c0 55 86 mov $0xffffffff8655c020,%r14 ffffffff8373cb8a: R_X86_64_32S __ref_stack_chk_guard
whereas the ordinary Clang uses R_X86_64_REX_GOTPCRELX here, which are relaxed by the linker.
I suspect that Ubuntu's Clang 15 has some additional patches that trigger this behavior.
... and then we don't know what else out there does other "additional" patches
;-\
We could add __no_stack_protector to __head to work around this.
Yap, that fixes the build:
diff --git a/arch/x86/include/asm/init.h b/arch/x86/include/asm/init.h index 0e82ebc5d1e1..6cf4ea847dc3 100644 --- a/arch/x86/include/asm/init.h +++ b/arch/x86/include/asm/init.h @@ -2,7 +2,7 @@ #ifndef _ASM_X86_INIT_H #define _ASM_X86_INIT_H
-#define __head __section(".head.text") __no_sanitize_undefined +#define __head __section(".head.text") __no_sanitize_undefined __no_stack_protector
struct x86_mapping_info { void *(*alloc_pgt_page)(void *); /* allocate buf for page table */
Thx.