efi_loader: use include in ARM EFI linker script

Use the same include as arm64 for the linker script.

Adjust the 32-bit ARM PE-COFF header accordingly and harmonize it with the
64-bit ARM header.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Heinrich Schuchardt 2025-01-16 12:39:09 +01:00
parent 216459d2cf
commit 590c1813a4
2 changed files with 6 additions and 74 deletions

View file

@ -46,8 +46,8 @@ optional_header:
.long 0 /* BaseOfData */ .long 0 /* BaseOfData */
extra_header_fields: extra_header_fields:
.long 0 /* image_base */ .long 0 /* ImageBase */
.long 0x200 /* SectionAlignment */ .long 0x1000 /* SectionAlignment */
.long 0x200 /* FileAlignment */ .long 0x200 /* FileAlignment */
.short 0 /* MajorOperatingSystemVersion */ .short 0 /* MajorOperatingSystemVersion */
.short 0 /* MinorOperatingSystemVersion */ .short 0 /* MinorOperatingSystemVersion */
@ -84,6 +84,7 @@ extra_header_fields:
.quad 0 /* CertificationTable */ .quad 0 /* CertificationTable */
.quad 0 /* BaseRelocationTable */ .quad 0 /* BaseRelocationTable */
/* Section table */
section_table: section_table:
/* /*
@ -111,9 +112,9 @@ section_table:
.byte 0 .byte 0
.byte 0 .byte 0
.byte 0 /* end of 0 padding of section name */ .byte 0 /* end of 0 padding of section name */
.long _text_size /* VirtualSize */ .long _etext - _start /* VirtualSize */
.long _start - image_base /* VirtualAddress */ .long _start - image_base /* VirtualAddress */
.long _text_size /* SizeOfRawData */ .long _etext - _start /* SizeOfRawData */
.long _start - image_base /* PointerToRawData */ .long _start - image_base /* PointerToRawData */
.long 0 /* PointerToRelocations */ .long 0 /* PointerToRelocations */
.long 0 /* PointerToLineNumbers */ .long 0 /* PointerToLineNumbers */

View file

@ -8,73 +8,4 @@
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm) OUTPUT_ARCH(arm)
PHDRS INCLUDE lib/efi_loader/elf_efi.ldsi
{
data PT_LOAD FLAGS(3); /* PF_W | PF_X */
}
ENTRY(_start)
SECTIONS
{
.text 0x0 : {
_text = .;
*(.text.head)
*(.text)
*(.text.*)
*(.gnu.linkonce.t.*)
*(.srodata)
*(.rodata*)
. = ALIGN(16);
*(.dynamic);
. = ALIGN(512);
}
_etext = .;
_text_size = . - _text;
. = ALIGN(4096);
.data : {
_data = .;
*(.sdata)
*(.data)
*(.data1)
*(.data.*)
*(.got.plt)
*(.got)
/*
* The EFI loader doesn't seem to like a .bss section, so we
* stick it all into .data:
*/
. = ALIGN(16);
_bss = .;
*(.sbss)
*(.scommon)
*(.dynbss)
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN(512);
_bss_end = .;
_edata = .;
} :data
_data_size = . - _data;
/DISCARD/ : {
/*
* We don't support relocations. These would have to be
* translated from ELF to PE format and added to the .reloc
* section.
*/
*(.rel.dyn)
*(.rel.plt)
*(.rel.got)
*(.rel.data)
*(.rel.data*)
*(.rel.reloc)
*(.eh_frame)
*(.note.GNU-stack)
*(.dynsym)
*(.dynstr)
*(.note.gnu.build-id)
*(.comment)
}
}