[PATCH 4/4] efi_loader: use include in ARM EFI linker script

Ilias Apalodimas ilias.apalodimas at linaro.org
Wed Jan 15 09:06:03 CET 2025


Hi Heinrich


On Tue, 14 Jan 2025 at 12:30, 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>
> ---
>  arch/arm/lib/crt0_arm_efi.S  | 37 ++++++++++---------
>  arch/arm/lib/elf_arm_efi.lds | 71 +-----------------------------------
>  2 files changed, 20 insertions(+), 88 deletions(-)
>
> diff --git a/arch/arm/lib/crt0_arm_efi.S b/arch/arm/lib/crt0_arm_efi.S
> index b5dfd4e3819..590fcf515da 100644
> --- a/arch/arm/lib/crt0_arm_efi.S
> +++ b/arch/arm/lib/crt0_arm_efi.S
> @@ -14,11 +14,11 @@
>         /*
>          * Magic "MZ" signature for PE/COFF
>          */
> -       .globl  image_base
> -image_base:
> +       .globl  ImageBase
> +ImageBase:
>         .short  IMAGE_DOS_SIGNATURE             /* 'MZ' */
>         .skip   58                              /* 'MZ' + pad + offset == 64 */
> -       .long   pe_header - image_base          /* Offset to the PE header */
> +       .long   pe_header - ImageBase           /* Offset to the PE header */
>  pe_header:
>         .long   IMAGE_NT_SIGNATURE              /* 'PE' */
>  coff_header:
> @@ -38,16 +38,16 @@ optional_header:
>         .short  IMAGE_NT_OPTIONAL_HDR32_MAGIC   /* PE32 format */
>         .byte   0x02                            /* MajorLinkerVersion */
>         .byte   0x14                            /* MinorLinkerVersion */
> -       .long   _edata - _start                 /* SizeOfCode */
> +       .long   _etext - _start                 /* SizeOfCode */

Was that an error all along? Or the boundaries changed by using the
include file?

>         .long   0                               /* SizeOfInitializedData */
>         .long   0                               /* SizeOfUninitializedData */
> -       .long   _start - image_base             /* AddressOfEntryPoint */
> -       .long   _start - image_base             /* BaseOfCode */
> +       .long   _start - ImageBase              /* AddressOfEntryPoint */
> +       .long   _start - ImageBase              /* BaseOfCode */
>         .long   0                               /* BaseOfData */
[...]

Other than that it looks ok

Thanks for cleaning this up!
/Ilias


More information about the U-Boot mailing list