Reviewed-by: Liming Gao <liming....@intel.com>

> -----Original Message-----
> From: Zhu, Yonghong
> Sent: Thursday, May 12, 2016 2:32 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming <liming....@intel.com>
> Subject: [Patch] BaseTools/GenFw: enhance to use Magic Field to identify
> the image
> 
> Original use the File Header Machine Field to identify
> EFI_IMAGE_OPTIONAL_HEADER32 or EFI_IMAGE_OPTIONAL_HEADER64, it
> cannot
> correctly handle EBC arch PE32 image.
> 
> Cc: Liming Gao <liming....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <yonghong....@intel.com>
> ---
>  BaseTools/Source/C/GenFw/GenFw.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/BaseTools/Source/C/GenFw/GenFw.c
> b/BaseTools/Source/C/GenFw/GenFw.c
> index 4a91df5..03bfaa1 100644
> --- a/BaseTools/Source/C/GenFw/GenFw.c
> +++ b/BaseTools/Source/C/GenFw/GenFw.c
> @@ -1,9 +1,9 @@
>  /** @file
>  Converts a pe32+ image to an FW, Te image type, or other specific image.
> 
> -Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
> @@ -2794,12 +2794,12 @@ Returns:
> 
>    //
>    // Get Debug, Export and Resource EntryTable RVA address.
>    // Resource Directory entry need to review.
>    //
> -  if (FileHdr->Machine == EFI_IMAGE_MACHINE_IA32) {
> -    Optional32Hdr = (EFI_IMAGE_OPTIONAL_HEADER32 *) ((UINT8*) FileHdr
> + sizeof (EFI_IMAGE_FILE_HEADER));
> +  Optional32Hdr = (EFI_IMAGE_OPTIONAL_HEADER32 *) ((UINT8*) FileHdr +
> sizeof (EFI_IMAGE_FILE_HEADER));
> +  if (Optional32Hdr->Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
>      SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *)
> Optional32Hdr +  FileHdr->SizeOfOptionalHeader);
>      if (Optional32Hdr->NumberOfRvaAndSizes >
> EFI_IMAGE_DIRECTORY_ENTRY_EXPORT && \
>          Optional32Hdr-
> >DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT].Size != 0) {
>        ExportDirectoryEntryRva = Optional32Hdr-
> >DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
>      }
> --
> 2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to