
Hello
neither the helloworld.efi of qemu-x86_64_defconfig nor the u-boot-payload.efi of efi-x86_payload64_defconfig can be started from the firmware of my Thinkpad 585 while grubx64.efi works fine.
Looking at the generated PE header I found the following abnormality:
coff.PointerToSymbolTable != 0 coff.NumberOfSymbols != 0
(using https://github.com/xypron/efi_analyzer)
According to the Microsoft Portable Executable and Common Object File Format Specification - rev 11 - 2017-01-17 these fields should be 0.
The U-Boot executables have these sections which do not exist in grubx64.efi, the EFI shell, and the Windows loader:
Section[3] .dynamic Section[4] .dynsym
So I think we have to change something in the linking to get usable EFI binaries.
Best regards
Heinrich