riscv: efi: Generate Microsoft PE format compliant images
authorBin Meng <bmeng.cn@gmail.com>
Tue, 2 Oct 2018 14:39:34 +0000 (07:39 -0700)
committerAlexander Graf <agraf@suse.de>
Sun, 2 Dec 2018 20:59:36 +0000 (21:59 +0100)
Per Microsoft PE Format documentation [1], PointerToSymbolTable and
NumberOfSymbols should be zero for an image in the COFF file header.
Currently the COFF file header is hardcoded on RISC-V and these two
members are not zero.

This updates the hardcoded structure to clear these two members, as
well as setting the flag IMAGE_FILE_LOCAL_SYMS_STRIPPED so that we
can generate compliant *.efi images.

[1] https://docs.microsoft.com/zh-cn/windows/desktop/Debug/pe-format

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/riscv/lib/crt0_riscv_efi.S

index 18f61f5..b7b5329 100644 (file)
@@ -41,13 +41,13 @@ coff_header:
        .short  2                               /* nr_sections */
        .long   0                               /* TimeDateStamp */
        .long   0                               /* PointerToSymbolTable */
-       .long   1                               /* NumberOfSymbols */
+       .long   0                               /* NumberOfSymbols */
        .short  section_table - optional_header /* SizeOfOptionalHeader */
-       /*
-        * Characteristics: IMAGE_FILE_DEBUG_STRIPPED |
-        * IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED
-        */
-       .short  0x206
+       /* Characteristics */
+       .short  (IMAGE_FILE_EXECUTABLE_IMAGE | \
+                IMAGE_FILE_LINE_NUMS_STRIPPED | \
+                IMAGE_FILE_LOCAL_SYMS_STRIPPED | \
+                IMAGE_FILE_DEBUG_STRIPPED)
 optional_header:
        .short  0x20b                           /* PE32+ format */
        .byte   0x02                            /* MajorLinkerVersion */