efi_loader: use include in ARM EFI linker script
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Thu, 16 Jan 2025 11:39:09 +0000 (12:39 +0100)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 17 Jan 2025 19:31:26 +0000 (20:31 +0100)
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>
arch/arm/lib/crt0_arm_efi.S
arch/arm/lib/elf_arm_efi.lds

index 3664cce..91b0fe1 100644 (file)
@@ -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 */
index 4144059..eb16fae 100644 (file)
@@ -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