Commit 76085aff authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Will Deacon

efi/libstub/arm64: align PE/COFF sections to segment alignment

The arm64 kernel's segment alignment is fixed at 64 KB for any page
size, and relocatable kernels are able to fix up any misalignment of
the kernel image with respect to the 2 MB section alignment that is
mandated by the arm64 boot protocol.

Let's increase the PE/COFF section alignment to the same value, so that
kernels loaded by the UEFI PE/COFF loader are guaranteed to end up at
an address that doesn't require any reallocation to be done if the
kernel is relocatable.
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20200413155521.24698-6-ardb@kernel.orgSigned-off-by: default avatarWill Deacon <will@kernel.org>
parent f4be140f
...@@ -32,7 +32,7 @@ optional_header: ...@@ -32,7 +32,7 @@ optional_header:
extra_header_fields: extra_header_fields:
.quad 0 // ImageBase .quad 0 // ImageBase
.long SZ_4K // SectionAlignment .long SEGMENT_ALIGN // SectionAlignment
.long PECOFF_FILE_ALIGNMENT // FileAlignment .long PECOFF_FILE_ALIGNMENT // FileAlignment
.short 0 // MajorOperatingSystemVersion .short 0 // MajorOperatingSystemVersion
.short 0 // MinorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion
......
...@@ -170,7 +170,7 @@ SECTIONS ...@@ -170,7 +170,7 @@ SECTIONS
*(.altinstr_replacement) *(.altinstr_replacement)
} }
. = ALIGN(PAGE_SIZE); . = ALIGN(SEGMENT_ALIGN);
__inittext_end = .; __inittext_end = .;
__initdata_begin = .; __initdata_begin = .;
...@@ -241,6 +241,7 @@ SECTIONS ...@@ -241,6 +241,7 @@ SECTIONS
. += INIT_DIR_SIZE; . += INIT_DIR_SIZE;
init_pg_end = .; init_pg_end = .;
. = ALIGN(SEGMENT_ALIGN);
__pecoff_data_size = ABSOLUTE(. - __initdata_begin); __pecoff_data_size = ABSOLUTE(. - __initdata_begin);
_end = .; _end = .;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment