[PATCH 1/1] efi_loader: set IMAGE_FILE_LARGE_ADDRESS_AWARE
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri Dec 23 08:30:19 CET 2022
Hi Heinrich,
On Fri, 23 Dec 2022 at 03:20, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> For the 64bit EFI binaries that we create set the
> IMAGE_FILE_LARGE_ADDRESS_AWARE characteristic in the PE-COFF header
> to indicate that they can handle addresses above 2 GiB.
>
Does that flag affect 64bit as well? I was under the impression it's
only needed for 32bit?
Thanks
/Ilias
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> arch/arm/lib/crt0_aarch64_efi.S | 1 +
> arch/riscv/lib/crt0_riscv_efi.S | 17 ++++++++++++-----
> 2 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/lib/crt0_aarch64_efi.S b/arch/arm/lib/crt0_aarch64_efi.S
> index 59fc3ed02d..d31b2b5fe9 100644
> --- a/arch/arm/lib/crt0_aarch64_efi.S
> +++ b/arch/arm/lib/crt0_aarch64_efi.S
> @@ -34,6 +34,7 @@ coff_header:
> .short (IMAGE_FILE_EXECUTABLE_IMAGE | \
> IMAGE_FILE_LINE_NUMS_STRIPPED | \
> IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
> + IMAGE_FILE_LARGE_ADDRESS_AWARE | \
> IMAGE_FILE_DEBUG_STRIPPED)
> optional_header:
> .short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */
> diff --git a/arch/riscv/lib/crt0_riscv_efi.S b/arch/riscv/lib/crt0_riscv_efi.S
> index a01e08a3c6..793eefdd88 100644
> --- a/arch/riscv/lib/crt0_riscv_efi.S
> +++ b/arch/riscv/lib/crt0_riscv_efi.S
> @@ -16,12 +16,23 @@
> #define LOAD_LONG(reg, idx) ld reg, (idx*SIZE_LONG)(sp)
> #define PE_MACHINE IMAGE_FILE_MACHINE_RISCV64
> #define PE_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC
> +#define IMG_CHARACTERISTICS \
> + (IMAGE_FILE_EXECUTABLE_IMAGE | \
> + IMAGE_FILE_LINE_NUMS_STRIPPED | \
> + IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
> + IMAGE_FILE_LARGE_ADDRESS_AWARE | \
> + IMAGE_FILE_DEBUG_STRIPPED)
> #else
> #define SIZE_LONG 4
> #define SAVE_LONG(reg, idx) sw reg, (idx*SIZE_LONG)(sp)
> #define LOAD_LONG(reg, idx) lw reg, (idx*SIZE_LONG)(sp)
> #define PE_MACHINE IMAGE_FILE_MACHINE_RISCV32
> #define PE_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
> +#define IMG_CHARACTERISTICS \
> + (IMAGE_FILE_EXECUTABLE_IMAGE | \
> + IMAGE_FILE_LINE_NUMS_STRIPPED | \
> + IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
> + IMAGE_FILE_DEBUG_STRIPPED)
> #endif
>
>
> @@ -47,11 +58,7 @@ coff_header:
> .long 0 /* PointerToSymbolTable */
> .long 0 /* NumberOfSymbols */
> .short section_table - optional_header /* SizeOfOptionalHeader */
> - /* Characteristics */
> - .short (IMAGE_FILE_EXECUTABLE_IMAGE | \
> - IMAGE_FILE_LINE_NUMS_STRIPPED | \
> - IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
> - IMAGE_FILE_DEBUG_STRIPPED)
> + .short IMG_CHARACTERISTICS /* Characteristics */
> optional_header:
> .short PE_MAGIC /* PE32(+) format */
> .byte 0x02 /* MajorLinkerVersion */
> --
> 2.37.2
>
More information about the U-Boot
mailing list