What is the feature you'd like to have?
The Arm64PeRelocationHandler is currently a stub that only throws a warning about an unsupported relocation type. Between the use of PE in EFI and the increasing popularity of Windows on ARM, it would be nice for PE relocations to be supported on ARM64.
Is your feature request related to a problem?
While analyzing an arm64 EFI binary, a number of important pointers and jump tables were replaced with null pointers.
Are any alternative solutions acceptable?
The IMAGE_REL_BASED_HIGH, IMAGE_REL_BASED_LOW, IMAGE_REL_BASED_HIGHLOW, IMAGE_REL_BASED_HIGHADJ, and IMAGE_REL_BASED_DIR64 relocations do not appear to be architecture-dependent. These could potentially be handled locally in the PE View rather than in individual architectures.
Additional Information:
Attached is a zipfile containing an EFI PE from the bootloader of the AP2A.240805.005.S4 build of Pixel 5a firmware that uses IMAGE_REL_BASED_DIR64 relocations. When loaded at the default base address of 0, a 19-entry jump table at 0x475d0 is currently replaced by all null pointers.
pixel5a_efi_pe.zip
Relevant .reloc directory entries:

The current view of the jump table:

The raw file contents for the jump table:

What is the feature you'd like to have?
The
Arm64PeRelocationHandleris currently a stub that only throws a warning about an unsupported relocation type. Between the use of PE in EFI and the increasing popularity of Windows on ARM, it would be nice for PE relocations to be supported on ARM64.Is your feature request related to a problem?
While analyzing an arm64 EFI binary, a number of important pointers and jump tables were replaced with null pointers.
Are any alternative solutions acceptable?
The
IMAGE_REL_BASED_HIGH,IMAGE_REL_BASED_LOW,IMAGE_REL_BASED_HIGHLOW,IMAGE_REL_BASED_HIGHADJ, andIMAGE_REL_BASED_DIR64relocations do not appear to be architecture-dependent. These could potentially be handled locally in the PE View rather than in individual architectures.Additional Information:
Attached is a zipfile containing an EFI PE from the bootloader of the AP2A.240805.005.S4 build of Pixel 5a firmware that uses
IMAGE_REL_BASED_DIR64relocations. When loaded at the default base address of0, a 19-entry jump table at0x475d0is currently replaced by all null pointers.pixel5a_efi_pe.zip
Relevant

.relocdirectory entries:The current view of the jump table:

The raw file contents for the jump table:
