arm64/efi: set PE/COFF file alignment to 512 bytes
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Change our PE/COFF header to use the minimum file alignment of 512 bytes (0x200), as mandated by the PE/COFF spec v8.3
Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
---
Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback.
arch/arm64/kernel/head.S | 2 +- arch/arm64/kernel/vmlinux.lds.S | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-)
arch/arm64/kernel/head.S +1 -1
@@ -162,7 +162,7 @@ optional_header: extra_header_fields: .quad 0 // ImageBase .long 0x1000 // SectionAlignment - .long 0x8 // FileAlignment + .long PECOFF_FILE_ALIGNMENT // FileAlignment .short 0 // MajorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion .short 0 // MajorImageVersion
arch/arm64/kernel/vmlinux.lds.S +17 -0
@@ -32,6 +32,22 @@ jiffies = jiffies_64; *(.hyp.text) \ VMLINUX_SYMBOL(__hyp_text_end) = .; +/* + * The size of the PE/COFF section that covers the kernel image, which + * runs from stext to _edata, must be a round multiple of the PE/COFF + * FileAlignment, which we set to its minimum value of 0x200. 'stext' + * itself is 4 KB aligned, so padding out _edata to a 0x200 aligned + * boundary should be sufficient. + */ +PECOFF_FILE_ALIGNMENT = 0x200; + +#ifdef CONFIG_EFI +#define PECOFF_EDATA_PADDING \ + .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } +#else +#define PECOFF_EDATA_PADDING +#endif + SECTIONS { /*
@@ -103,6 +119,7 @@ SECTIONS _data = .; _sdata = .; RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE) + PECOFF_EDATA_PADDING _edata = .; BSS_SECTION(0, 0, 0)
Signature · 1 line
1.8.3.2
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Quoted 8 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Signed-off-by Ard Biesheuvel <[email protected]>---
Quoted 59 lines
Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback.
arch/arm64/kernel/head.S | 2 +- arch/arm64/kernel/vmlinux.lds.S | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-)arch/arm64/kernel/head.S +1
-1@@ -162,7 +162,7 @@ optional_header: extra_header_fields: .quad 0 // ImageBase .long 0x1000 // SectionAlignment - .long 0x8 // FileAlignment + .long PECOFF_FILE_ALIGNMENT // FileAlignment .short 0 // MajorOperatingSystemVersion .short 0 // MinorOperatingSystemVersion .short 0 // MajorImageVersionarch/arm64/kernel/vmlinux.lds.S +17
-1@@ -32,6 +32,22 @@ jiffies = jiffies_64; *(.hyp.text) \ VMLINUX_SYMBOL(__hyp_text_end) = .; +/* + * The size of the PE/COFF section that covers the kernel image, which + * runs from stext to _edata, must be a round multiple of the PE/COFF + * FileAlignment, which we set to its minimum value of 0x200. 'stext' + * itself is 4 KB aligned, so padding out _edata to a 0x200 aligned + * boundary should be sufficient. + */ +PECOFF_FILE_ALIGNMENT = 0x200; + +#ifdef CONFIG_EFI +#define PECOFF_EDATA_PADDING \ + .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } +#else +#define PECOFF_EDATA_PADDING +#endif + SECTIONS { /*@@ -103,6 +119,7 @@ SECTIONS _data = .; _sdata = .; RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE) + PECOFF_EDATA_PADDING _edata = .; BSS_SECTION(0, 0, 0) --1.8.3.2
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Quoted 5 lines · Roy Franz
Quoted 3 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3
Quoted 7 lines
Quoted 5 lines
Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Signed-off-by Ard Biesheuvel <[email protected]>---
Signed-off-by Roy Franz <[email protected]>
Whut? Is there some patch authorship madness going on here?
Who wrote the patch?
Signature · 1 line
Matt Fleming, Intel Open Source Technology Center
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Quoted 9 lines · Matt Fleming
Quoted 8 lines · Roy Franz
Quoted 6 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Quoted 9 lines
Quoted 4 lines
Quoted 2 lines
Signed-off-by Ard Biesheuvel <[email protected]>---
Signed-off-by Roy Franz <[email protected]>Whut? Is there some patch authorship madness going on here?
Who wrote the patch?
I wrote the patch, and I suppose Roy meant to ack it.
Roy?
Signature · 1 line
Ard.
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Quoted 20 lines · Ard Biesheuvel
Quoted 9 lines · Matt Fleming
Quoted 8 lines · Roy Franz
Quoted 6 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Quoted 9 lines
Quoted 4 lines
Quoted 2 lines
Signed-off-by Ard Biesheuvel <[email protected]>---
Signed-off-by Roy Franz <[email protected]>Whut? Is there some patch authorship madness going on here?
Who wrote the patch?
Quoted 6 lines
I wrote the patch, and I suppose Roy meant to ack it.
Roy?
--
Ard.
Sorry!
Catalin Marinas
maintainerPATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
In reply to Ard BiesheuvelQuoted 11 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Signed-off-by Ard Biesheuvel <[email protected]>---
Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback.
If Matt is taking more patches in this series, here's my ack:
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
In reply to Ard BiesheuvelQuoted 11 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Signed-off-by Ard Biesheuvel <[email protected]>---
Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback.
It appears a though next week never came.
Should I pick up this version and apply ACK tags from the mailing list? Or are you planning on sending a larger series?
It sounds like this should be tagged for stable, and placed into the EFI urgent queue?
Signature · 1 line
Matt Fleming, Intel Open Source Technology Center
PATCH 1/1 arm64/efi: set PE/COFF file alignment to 512 bytes
Quoted 13 lines · Matt Fleming
Quoted 11 lines · Ard Biesheuvel
Change our PE/COFF header to use the minimum file alignment of 512 bytes (
0x200), as mandated by the PE/COFF spec v8.3Also update the linker script so that the Image file itself is also a round multiple of FileAlignment.
Signed-off-by Ard Biesheuvel <[email protected]>---
Another one from the PE/COFF rabbit hole. I will follow up next week and repost as a coherent series, once I have collected all the feedback.
Quoted 8 lines
It appears a though next week never came.
Should I pick up this version and apply ACK tags from the mailing list? Or are you planning on sending a larger series?
It sounds like this should be tagged for stable, and placed into the EFI urgent queue?
I have a couple of patches like this one in my queue, and I don't think any of them are urgent. These alignment fixes etc are mainly for full compliance with the various specs, and there are no known issues being solved by them.
I was going to wait for -rc1 and rebase on top of that, but it appears your branch hasn't been picked up?
Signature · 1 line
Ard.