Update the PE/COFF metadata so that the UEFI image loader will load the kernel image at an offset that allows it to execute in place. Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> --- arch/arm64/kernel/efi-header.S | 2 +- arch/arm64/kernel/image-vars.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S index 914999ccaf8a..f9ee1c2a5fd6 100644 --- a/arch/arm64/kernel/efi-header.S +++ b/arch/arm64/kernel/efi-header.S @@ -32,7 +32,7 @@ optional_header: extra_header_fields: .quad 0 // ImageBase - .long SZ_4K // SectionAlignment + .long PECOFF_SECTION_ALIGNMENT // SectionAlignment .long PECOFF_FILE_ALIGNMENT // FileAlignment .short 0 // MajorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h index be0a63ffed23..7a7fa3ba7b2f 100644 --- a/arch/arm64/kernel/image-vars.h +++ b/arch/arm64/kernel/image-vars.h @@ -15,6 +15,13 @@ __efistub_kernel_size = _edata - _text; __efistub_primary_entry_offset = primary_entry - _text; +#ifndef CONFIG_RELOCATABLE +PECOFF_SECTION_ALIGNMENT = SZ_4K; +#elif THREAD_ALIGN > SEGMENT_ALIGN +PECOFF_SECTION_ALIGNMENT = THREAD_ALIGN; +#else +PECOFF_SECTION_ALIGNMENT = SEGMENT_ALIGN; +#endif /* * The EFI stub has its own symbol namespace prefixed by __efistub_, to -- 2.17.1