riscv: efi: Generate Microsoft PE format compliant images

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>
This commit is contained in:
Bin Meng 2018-10-02 07:39:34 -07:00 committed by Alexander Graf
parent fb8ebf52a4
commit a33a4efd27

View file

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