[PATCH v2 5/5] efi_loader: use include in ARM EFI linker script
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri Jan 17 10:19:55 CET 2025
On Thu, 16 Jan 2025 at 13:39, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> 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.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> Do not rename field image_base to ImageBase.
> Move SizeOfCode change to separate patch.
> ---
> arch/arm/lib/crt0_arm_efi.S | 9 +++--
> arch/arm/lib/elf_arm_efi.lds | 71 +-----------------------------------
> 2 files changed, 6 insertions(+), 74 deletions(-)
>
> diff --git a/arch/arm/lib/crt0_arm_efi.S b/arch/arm/lib/crt0_arm_efi.S
> index 3664cce8412..91b0fe12c51 100644
> --- a/arch/arm/lib/crt0_arm_efi.S
> +++ b/arch/arm/lib/crt0_arm_efi.S
> @@ -46,8 +46,8 @@ optional_header:
> .long 0 /* BaseOfData */
>
> extra_header_fields:
> - .long 0 /* image_base */
> - .long 0x200 /* SectionAlignment */
> + .long 0 /* ImageBase */
> + .long 0x1000 /* SectionAlignment */
> .long 0x200 /* FileAlignment */
> .short 0 /* MajorOperatingSystemVersion */
> .short 0 /* MinorOperatingSystemVersion */
> @@ -84,6 +84,7 @@ extra_header_fields:
> .quad 0 /* CertificationTable */
> .quad 0 /* BaseRelocationTable */
>
> + /* Section table */
> section_table:
>
> /*
> @@ -111,9 +112,9 @@ section_table:
> .byte 0
> .byte 0
> .byte 0 /* end of 0 padding of section name */
> - .long _text_size /* VirtualSize */
> + .long _etext - _start /* VirtualSize */
> .long _start - image_base /* VirtualAddress */
> - .long _text_size /* SizeOfRawData */
> + .long _etext - _start /* SizeOfRawData */
> .long _start - image_base /* PointerToRawData */
> .long 0 /* PointerToRelocations */
> .long 0 /* PointerToLineNumbers */
> diff --git a/arch/arm/lib/elf_arm_efi.lds b/arch/arm/lib/elf_arm_efi.lds
> index 41440594aa6..eb16fae74cf 100644
> --- a/arch/arm/lib/elf_arm_efi.lds
> +++ b/arch/arm/lib/elf_arm_efi.lds
> @@ -8,73 +8,4 @@
> OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
> OUTPUT_ARCH(arm)
>
> -PHDRS
> -{
> - 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)
> - }
> -}
> +INCLUDE lib/efi_loader/elf_efi.ldsi
> --
> 2.47.1
>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list