File gnu-efi-bsc1182057-support-sbat-section.patch of Package gnu-efi
From fb52c3207282f1b8b5ca2f445210bbd00ac8f42a Mon Sep 17 00:00:00 2001
From: Gary Lin <glin@suse.com>
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 <glin@suse.com>
---
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.plt : { *(.rel.plt) }
_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
}
. = ALIGN(4096);
.rela.plt : { *(.rela.plt) }
+ . = ALIGN(4096);
+ .sbat :
+ {
+ _sbat = .;
+ *(.sbat)
+ *(.sbat.*)
+ }
+ _esbat = .;
+ _sbat_size = . - _sbat;
+
. = ALIGN(4096);
.dynsym : { *(.dynsym) }
. = ALIGN(4096);
--- a/gnuefi/elf_ia32_efi.lds
+++ b/gnuefi/elf_ia32_efi.lds
@@ -72,6 +72,16 @@ SECTIONS
*(.reloc)
}
. = ALIGN(4096);
+ .sbat :
+ {
+ _sbat = .;
+ *(.sbat)
+ *(.sbat.*)
+ }
+ _esbat = .;
+ _sbat_size = . - _sbat;
+
+ . = ALIGN(4096);
.dynsym : { *(.dynsym) }
. = ALIGN(4096);
.dynstr : { *(.dynstr) }
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)
+
+
.text
.globl _start
_start:
--
2.29.2