[U-Boot] [PATCH 1/5] efi_loader: Generate Microsoft PE format complaint images

Bin Meng bmeng.cn at gmail.com
Tue Oct 2 14:31:17 UTC 2018


Hi Heinrich,

On Thu, Sep 27, 2018 at 2:40 AM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 09/26/2018 08:03 AM, Bin Meng wrote:
> > Per Microsoft PE Format documentation [1], PointerToSymbolTable and
> > NumberOfSymbols should be zero for an image in the COFF file header.
> > Currently U-Boot is generating *.efi images (eg: helloworld.efi) in
> > which these two members are not zero.
> >
> > This updates the build rules to tell linker to remove the symbol
> > table completely so that we can generate compliant *.efi images.
> >
> > [1] https://docs.microsoft.com/zh-cn/windows/desktop/Debug/pe-format
> >
> > Reported-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> > ---
>
>
> With the -s switch
> - PointerToSymbolTable is 0,
> - NumberOfSymbols is 0.
>
> $ objdump -T  lib/efi_loader/helloworld.efi
>
> lib/efi_loader/helloworld.efi:     file format pei-i386
>
> objdump: lib/efi_loader/helloworld.efi: not a dynamic object
> DYNAMIC SYMBOL TABLE:
> no symbols
>
> So the binaries are now conforming the PE standard.
>
> qemu-x86_defconfig lib/efi_loader/helloworld.efi still contains these
> sections:
>
> Section[3] .dynamic
> Section[5] .dynsym
>
> Is this what you expect when you have 0 symbols? Should these sections
> be removed with strip -R? But anyway these empty tables do no harm.
>

As you said, they do no harm so let's leave them there. I indeed
investigated 'strip' before but I used the '-s' switch of the linker
in the end.

> Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
>

Regards,
Bin


More information about the U-Boot mailing list