[U-Boot] [PATCH 4/5] arm: efi: Generate Microsoft PE format complaint images
Bin Meng
bmeng.cn at gmail.com
Tue Oct 2 14:16:44 UTC 2018
Hi Heinrich,
On Thu, Sep 27, 2018 at 1:51 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 the COFF file header is hardcoded on ARM 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 at gmail.com>
> > ---
> >
> > arch/arm/lib/crt0_aarch64_efi.S | 7 ++++---
> > arch/arm/lib/crt0_arm_efi.S | 6 +++---
> > 2 files changed, 7 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/arm/lib/crt0_aarch64_efi.S b/arch/arm/lib/crt0_aarch64_efi.S
> > index 0db4360..a489d05 100644
> > --- a/arch/arm/lib/crt0_aarch64_efi.S
> > +++ b/arch/arm/lib/crt0_aarch64_efi.S
> > @@ -28,13 +28,14 @@ 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
> > + * IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LINE_NUMS_STRIPPED |
> > + * IMAGE_FILE_LOCAL_SYMS_STRIPPED
> > */
> > - .short 0x206
> > + .short 0x20e
>
> I think your code misses to set IMAGE_FILE_32BIT_MACHINE in dependence
> of the bitness of the system.
>
Do you mean currently for aarch64 targets, U-Boot only supports
loading 32-bit EFI images?
> I would prefer if these constants were defined in asm-generic/pe.h:
>
> #define IMAGE_FILE_RELOCS_STRIPPED 0x0001
> #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
> #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
> #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
> #define IMAGE_FILE_AGGRESSIVE_WS_TRIM 0x0010
> #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
> /* Reserved 0x0040 */
> #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
> #define IMAGE_FILE_32BIT_MACHINE 0x0100
> #define IMAGE_FILE_DEBUG_STRIPPED 0x0200
> #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
> #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
> #define IMAGE_FILE_SYSTEM 0x1000
> #define IMAGE_FILE_DLL 0x2000
> #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
> #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
>
Will add these macros in v2.
Regards,
Bin
More information about the U-Boot
mailing list