From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Tue, 2 Oct 2018 22:16:44 +0800 Subject: [U-Boot] [PATCH 4/5] arm: efi: Generate Microsoft PE format complaint images In-Reply-To: References: <1537941789-9213-1-git-send-email-bmeng.cn@gmail.com> <1537941789-9213-4-git-send-email-bmeng.cn@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Heinrich, On Thu, Sep 27, 2018 at 1:51 AM Heinrich Schuchardt 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 > > --- > > > > 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