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.

Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@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

Reply via email to