EDK II refuses to load the EFI binaries created by U-Boot.
The reason is an incorrect PE-COFF header. The number of
data directories does not match NumberOfRvaAndSizes.
This leads to a failed consistency check in
PeCoffLoaderGetPeHeader():

    SizeOfOptionalHeader - HeaderWithoutDataDir) !=
    NumberOfRvaAndSizes * sizeof(DATA_DIRECTORY))

Fixes: 9afaeec6ef8b ("riscv: Complete efi header for RV32/64")
Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
---
 arch/riscv/lib/crt0_riscv_efi.S | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/arch/riscv/lib/crt0_riscv_efi.S b/arch/riscv/lib/crt0_riscv_efi.S
index b0a7a39a72..3e62e8e67b 100644
--- a/arch/riscv/lib/crt0_riscv_efi.S
+++ b/arch/riscv/lib/crt0_riscv_efi.S
@@ -110,16 +110,6 @@ extra_header_fields:
        .quad   0                               /* ExceptionTable */
        .quad   0                               /* CertificationTable */
        .quad   0                               /* BaseRelocationTable */
-       .quad   0                               /* Debug */
-       .quad   0                               /* Architecture */
-       .quad   0                               /* Global Ptr */
-       .quad   0                               /* TLS Table */
-       .quad   0                               /* Load Config Table */
-       .quad   0                               /* Bound Import */
-       .quad   0                               /* IAT */
-       .quad   0                               /* Delay Import Descriptor */
-       .quad   0                               /* CLR Runtime Header */
-       .quad   0                               /* Reserved */
 
        /* Section table */
 section_table:
-- 
2.33.1

Reply via email to