efi_loader: set IMAGE_FILE_LARGE_ADDRESS_AWARE

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.schuchardt@canonical.com>
This commit is contained in:
Heinrich Schuchardt 2022-12-23 02:16:03 +01:00
parent c33d389c7a
commit 3ec07c99d8
2 changed files with 13 additions and 5 deletions

View file

@ -34,6 +34,7 @@ coff_header:
.short (IMAGE_FILE_EXECUTABLE_IMAGE | \ .short (IMAGE_FILE_EXECUTABLE_IMAGE | \
IMAGE_FILE_LINE_NUMS_STRIPPED | \ IMAGE_FILE_LINE_NUMS_STRIPPED | \
IMAGE_FILE_LOCAL_SYMS_STRIPPED | \ IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
IMAGE_FILE_LARGE_ADDRESS_AWARE | \
IMAGE_FILE_DEBUG_STRIPPED) IMAGE_FILE_DEBUG_STRIPPED)
optional_header: optional_header:
.short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */ .short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */

View file

@ -16,12 +16,23 @@
#define LOAD_LONG(reg, idx) ld reg, (idx*SIZE_LONG)(sp) #define LOAD_LONG(reg, idx) ld reg, (idx*SIZE_LONG)(sp)
#define PE_MACHINE IMAGE_FILE_MACHINE_RISCV64 #define PE_MACHINE IMAGE_FILE_MACHINE_RISCV64
#define PE_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC #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 #else
#define SIZE_LONG 4 #define SIZE_LONG 4
#define SAVE_LONG(reg, idx) sw reg, (idx*SIZE_LONG)(sp) #define SAVE_LONG(reg, idx) sw reg, (idx*SIZE_LONG)(sp)
#define LOAD_LONG(reg, idx) lw 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_MACHINE IMAGE_FILE_MACHINE_RISCV32
#define PE_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC #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 #endif
@ -47,11 +58,7 @@ coff_header:
.long 0 /* PointerToSymbolTable */ .long 0 /* PointerToSymbolTable */
.long 0 /* NumberOfSymbols */ .long 0 /* NumberOfSymbols */
.short section_table - optional_header /* SizeOfOptionalHeader */ .short section_table - optional_header /* SizeOfOptionalHeader */
/* Characteristics */ .short IMG_CHARACTERISTICS /* Characteristics */
.short (IMAGE_FILE_EXECUTABLE_IMAGE | \
IMAGE_FILE_LINE_NUMS_STRIPPED | \
IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
IMAGE_FILE_DEBUG_STRIPPED)
optional_header: optional_header:
.short PE_MAGIC /* PE32(+) format */ .short PE_MAGIC /* PE32(+) format */
.byte 0x02 /* MajorLinkerVersion */ .byte 0x02 /* MajorLinkerVersion */