From fb52c3207282f1b8b5ca2f445210bbd00ac8f42a Mon Sep 17 00:00:00 2001 From: Gary Lin Date: Fri, 12 Mar 2021 15:35:08 +0800 Subject: [PATCH 1/2] Update linker scripts to add .sbat section Signed-off-by: Gary Lin --- gnuefi/elf_aarch64_efi.lds | 9 +++++++++ gnuefi/elf_arm_efi.lds | 9 +++++++++ gnuefi/elf_x86_64_efi.lds | 10 ++++++++++ 3 files changed, 28 insertions(+) diff --git a/gnuefi/elf_aarch64_efi.lds b/gnuefi/elf_aarch64_efi.lds index 836d982..1ddec27 100644 --- a/gnuefi/elf_aarch64_efi.lds +++ b/gnuefi/elf_aarch64_efi.lds @@ -46,6 +46,15 @@ SECTIONS . = ALIGN(512); _edata = .; _data_size = . - _data; + . = ALIGN(4096); + .sbat : + { + _sbat = .; + *(.sbat) + *(.sbat.*) + } + _esbat = .; + _sbat_size = . - _sbat; . = ALIGN(4096); .dynsym : { *(.dynsym) } diff --git a/gnuefi/elf_arm_efi.lds b/gnuefi/elf_arm_efi.lds index 665bbdb..d47a750 100644 --- a/gnuefi/elf_arm_efi.lds +++ b/gnuefi/elf_arm_efi.lds @@ -46,6 +46,15 @@ SECTIONS .rel.data : { *(.rel.data) *(.rel.data*) } _edata = .; _data_size = . - _etext; + . = ALIGN(4096); + .sbat : + { + _sbat = .; + *(.sbat) + *(.sbat.*) + } + _esbat = .; + _sbat_size = . - _sbat; . = ALIGN(4096); .dynsym : { *(.dynsym) } diff --git a/gnuefi/elf_x86_64_efi.lds b/gnuefi/elf_x86_64_efi.lds index 7be5902..fad1939 100644 --- a/gnuefi/elf_x86_64_efi.lds +++ b/gnuefi/elf_x86_64_efi.lds @@ -61,6 +61,16 @@ SECTIONS *(.rela.got) *(.rela.stab) } + . = ALIGN(4096); + .sbat : + { + _sbat = .; + *(.sbat) + *(.sbat.*) + } + _esbat = .; + _sbat_size = . - _sbat; + . = ALIGN(4096); .dynsym : { *(.dynsym) } . = ALIGN(4096); -- 2.29.2 From 6014f854bd3a083f866a6379c34711bd294202a2 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Thu, 11 Mar 2021 10:08:41 -0500 Subject: [PATCH 2/2] arm/aarch64: include .sbat in section headers. Signed-off-by: Peter Jones --- gnuefi/crt0-efi-aarch64.S | 14 +++++++++++++- gnuefi/crt0-efi-arm.S | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/gnuefi/crt0-efi-aarch64.S b/gnuefi/crt0-efi-aarch64.S index c300d89..9d4ffcd 100644 --- a/gnuefi/crt0-efi-aarch64.S +++ b/gnuefi/crt0-efi-aarch64.S @@ -31,7 +31,7 @@ pe_header: .short 0 coff_header: .short 0xaa64 // AArch64 - .short 2 // nr_sections + .short 3 // nr_sections .long 0 // TimeDateStamp .long 0 // PointerToSymbolTable .long 0 // NumberOfSymbols @@ -109,6 +109,18 @@ section_table: .short 0 // NumberOfLineNumbers (0 for executables) .long 0xc0000040 // Characteristics (section flags) + .ascii ".sbat\0\0\0" + .long _sbat_size // VirtualSize + .long _sbat - ImageBase // VirtualAddress + .long _sbat_size // SizeOfRawData + .long _sbat - ImageBase // PointerToRawData + + .long 0 // PointerToRelocations (0 for executables) + .long 0 // PointerToLineNumbers (0 for executables) + .short 0 // NumberOfRelocations (0 for executables) + .short 0 // NumberOfLineNumbers (0 for executables) + .long 0x40400040 // Characteristics (section flags) + .align 12 _start: stp x29, x30, [sp, #-32]! diff --git a/gnuefi/crt0-efi-arm.S b/gnuefi/crt0-efi-arm.S index c5bb6d4..0189868 100644 --- a/gnuefi/crt0-efi-arm.S +++ b/gnuefi/crt0-efi-arm.S @@ -31,7 +31,7 @@ pe_header: .short 0 coff_header: .short 0x1c2 // Mixed ARM/Thumb - .short 2 // nr_sections + .short 3 // nr_sections .long 0 // TimeDateStamp .long 0 // PointerToSymbolTable .long 0 // NumberOfSymbols @@ -122,6 +122,20 @@ section_table: .short 0 // NumberOfLineNumbers (0 for executables) .long 0xe0500020 // Characteristics (section flags) + + .ascii ".sbat\0\0\0" + .long _sbat_size // VirtualSize + .long _sbat - ImageBase // VirtualAddress + .long _sbat_size // SizeOfRawData + .long _sbat - ImageBase // PointerToRawData + + .long 0 // PointerToRelocations (0 for executables) + .long 0 // PointerToLineNumbers (0 for executables) + .short 0 // NumberOfRelocations (0 for executables) + .short 0 // NumberOfLineNumbers (0 for executables) + .long 0x40400040 // Characteristics (section flags) + + _start: stmfd sp!, {r0-r2, lr} -- 2.29.2