Hi,
So answering my own question, MS tooling does not include base relocs for EXEs by default (although apparently a few others do, like Delphi, and base relocs are embedded if building with ASLR)
I changed the implementation to also embed base relocs if subsystem is EFI applications, EFI boot drivers and EFI runtime drivers, and the linker option has been changed to -Wl,-no-strip-base-relocs, as suggested.
I also re-worked the cleanup patch to address Grischka's comment. We can get rid of the clutter while still avoiding hard to understand (or maintain) constants.
I tested this with OVMF on QEMU, VMware Fusion, ArmVirtPkg (AArch64 UEFI for QEMU) and a few real ARM server platforms (especially ones that had no RAM at the preferred loading address, forcing base relocs to be applied).
<image.png>
<image.png>
A