From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-in24.apple.com (mail-out24.apple.com [17.171.2.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9C6632095DE44 for ; Thu, 10 Aug 2017 09:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1502384355; h=From:Sender:Reply-To:Subject:Date:Message-id:To:Cc:MIME-version:Content-type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-reply-to:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=6LQRfAuVBqpSJSDRnyA8y2q4fTA0+VJNkudiv92JQ/c=; b=LRLZdjfr6xEhdZXbcHo+xb4Amb7YvrzN+ZO2gBwK7mdXkuM103UpEK1JeMklUm3T g+FVLue9cQcKcgMEcIhNfddrAMMWoKW2ugqnJJbq/0McrqSOEGEcDvDnKHD45EBz nxfnUTtiNGZhw0xSam/binolFmIVYB8AvqnuPQjojcARahaVDZuUCb3Ya/Ym2MvU kArcYnZLC2Y8gr6oWS2/H+hItviyFYbALzlMl+Vr9SQXbYZ52dbL9FFhom1P1dMS WsM3mQGl7waz+LenuKIXV6d2MFvNdVXyv0rJywKmqTjFWTSE5RlB6NsZHY1NlMQe 1QIEwcdJJrC3r5TAIaH74g==; Received: from relay27.apple.com (relay27.apple.com [17.171.128.108]) (using TLS with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail-in24.apple.com (Apple Secure Mail Relay) with SMTP id 4D.A6.06274.3E09C895; Thu, 10 Aug 2017 09:59:15 -0700 (PDT) X-AuditID: 11ab0218-b453b9c000001882-8c-598c90e38eef Received: from ma1-mmpp-sz08.apple.com (ma1-mmpp-sz08.apple.com [17.171.128.176]) by relay27.apple.com (Apple SCV relay) with SMTP id C3.7C.03167.2E09C895; Thu, 10 Aug 2017 09:59:14 -0700 (PDT) MIME-version: 1.0 Received: from [17.234.197.209] by ma1-mmpp-sz08.apple.com (Oracle Communications Messaging Server 8.0.1.2.20170621 64bit (built Jun 21 2017)) with ESMTPSA id <0OUH00C31B6NL180@ma1-mmpp-sz08.apple.com>; Thu, 10 Aug 2017 09:59:14 -0700 (PDT) Sender: afish@apple.com From: Andrew Fish Message-id: <2AC68977-AB40-45DC-B97D-27FFCE19C155@apple.com> Date: Thu, 10 Aug 2017 09:59:10 -0700 In-reply-to: <4A89E2EF3DFEDB4C8BFDE51014F606A14D76DAD8@shsmsx102.ccr.corp.intel.com> Cc: "Zhu, Yonghong" , Mike Kinney , "edk2-devel@lists.01.org" To: "Gao, Liming" References: <1502078429-13340-1-git-send-email-yonghong.zhu@intel.com> <5BC1C303-CE42-4DAD-91EB-F4BB327DE88A@apple.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D76DAD8@shsmsx102.ccr.corp.intel.com> X-Mailer: Apple Mail (2.3273) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsUiuLohR/fxhJ5IgxNHWC32HDrKbLHi3gZ2 i46Of0wW+zvSHFg8Fu95yeTRPfsfSwBTFJdNSmpOZllqkb5dAlfG1MdPmAoaX7NW3Lszh6WB sWcqaxcjJ4eEgInE/cnb2LoYOTiEBNYzSRyUgQlf6FrI3sXIBRQ+zCjx/vsvFpAEr4CgxI/J 98BsZoEwiZ9r7jJCFH1jlLjT9QQsISwgLvHuzCZmEJtNQFlixfwP7BDNNhJ/Vy9ghqhJlPg8 8zMTiM0ioCoxfcokMJsTaGj/gbnMIEOZBfoZJWYubmMESYgIaEg8vPebGe6k33PfMkLcKitx a/YlZgh7BZvE9mVlExiFZiG5dhaSayFsLYnvj1qB4hxAtrzEwfOyEGFNiWf3PrFD2NoST95d YF3AyLaKUTg3MTNHNzPPyEQvsaAgJ1UvOT93EyM4RpgkdjB+eW14iFGAg1GJh9dCridSiDWx rLgy9xCjNAeLkjivy/nuSCGB9MSS1OzU1ILUovii0pzU4kOMTBycUg2MUlEWcoEuEqtPFq3O S5PsK0jZk1s6cdnbuOpTy8R9DWQXfIgKtzS8cuuJn5v1m7U3V8ql5cx863He91JQ9PdFC6vW 3UmREZKufS23U7jdRqXPpdK1YYHexS/RXryrMg6zMcgc1Om0WsXRG8uxq1ex6/30B2/tq/JZ mi/J7438cCogvUxYyV+JpTgj0VCLuag4EQDvB53WcgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsUiuLphg+6jCT2RBtMXWVnsOXSU2WLFvQ3s Fh0d/5gs9nekObB4LN7zksmje/Y/lgCmKC6blNSczLLUIn27BK6MqY+fMBU0vmatuHdnDksD Y89U1i5GTg4JAROJC10L2bsYuTiEBA4zSrz//osFJMErICjxY/I9MJtZIEzi55q7jBBF3xgl 7nQ9AUsIC4hLvDuziRnEZhNQllgx/wM7RLONxN/VC5ghahIlPs/8zARiswioSkyfMgnM5gQa 2n9gLjPIUGaBfkaJmYvbGEESIgIaEg/v/WaGO+n33LeMELfKStyafYl5AiP/LCQXzkJyIYSt JfH9UStQnAPIlpc4eF4WIqwp8ezeJ3YIW1viybsLrAsY2VYxChal5iRWGpnrJRYU5KTqJefn bmKEBHbODsY7N80OMQpwMCrx8CaIdkcKsSaWFVfmHmKU4GBWEuHtqOyJFOJNSaysSi3Kjy8q zUktPsQozcGiJM77owOoWiA9sSQ1OzW1ILUIJsvEwSnVwJg8beJB4bLFofpXKgTfcjBEaT2f G17fEV3LJ8y0dsUVBzcHGcaWu5Nen/m+4slCyfo98isbru8/0K2wr9dahTvsSV7qcq5l2bZe otoqh9b7Ge4QCzVcJ3DD5CE7g9/hVbJHune6R6YbF9jIN+zP12JtbZ1eZbuXs6yswrD1qECt ftjJ+1VCSizFGYmGWsxFxYkARm2U5GgCAAA= X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [Patch] BaseTools: Fix Segmentation fault: 11 when build AppPkg with XCODE5 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Aug 2017 16:56:57 -0000 Content-Type: text/plain; CHARSET=US-ASCII Content-Transfer-Encoding: 7BIT > On Aug 10, 2017, at 3:38 AM, Gao, Liming wrote: > > Andrew: > If this is a mtoc bug, I suggest to update GenFw to always correct it in the generated EFI image. If so, the EFI image is always correct. There is no change requirement in PeCoff library in MdePkg. > Liming, EFI supports loading PE/COFF images that are not built at the same time as the platform firmware (UEFI Shell, OS loader), and that is why I added the fix to the PE/COFF library code. Thanks, Andrew Fish > Thanks > Liming > From: afish@apple.com [mailto:afish@apple.com ] > Sent: Tuesday, August 8, 2017 12:26 AM > To: Zhu, Yonghong > > Cc: edk2-devel@lists.01.org ; Gao, Liming >; Kinney, Michael D > > Subject: Re: [Patch] BaseTools: Fix Segmentation fault: 11 when build AppPkg with XCODE5 > > Should that be: > Contributed-under: TianoCore Contribution Agreement 1.1 > > I also noticed the PeCoff lib is going to loop and reload the .debug suction due to this mtoc bug, so it would be good to harden that code too. > > git diff MdePkg/Library/BasePeCoffLib/BasePeCoff.c > diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c > index 8d1daba..1e4c67e 100644 > --- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c > +++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c > @@ -771,6 +771,8 @@ PeCoffLoaderGetImageInfo ( > } > > return RETURN_SUCCESS; > + } else if (DebugEntry.Type == CODEVIEW_SIGNATURE_MTOC) { > + return RETURN_SUCCESS; > } > } > } > @@ -862,6 +864,8 @@ PeCoffLoaderGetImageInfo ( > if (DebugEntry.Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) { > ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index); > return RETURN_SUCCESS; > + } else if (DebugEntry.Type == CODEVIEW_SIGNATURE_MTOC) { > + return RETURN_SUCCESS; > } > } > } > > > > https://bugzilla.tianocore.org/show_bug.cgi?id=663 > Contributed-under: TianoCore Contribution Agreement 1.1 > > Thanks, > > Andrew Fish > > > On Aug 6, 2017, at 9:00 PM, Yonghong Zhu >> wrote: > > it is a bug in mtoc setting the size of the debug directory entry to > the size of the .debug section, not the size of the > EFI_IMAGE_DEBUG_DIRECTORY_ENTRY. It was causing a loop to iterate and > get bogus EFI_IMAGE_DEBUG_DIRECTORY_ENTRY data and pass that to > memset() and boom. > > Cc: Liming Gao > > Cc: Michael D Kinney > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Andrew Fish > > --- > BaseTools/Source/C/GenFw/GenFw.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/BaseTools/Source/C/GenFw/GenFw.c b/BaseTools/Source/C/GenFw/GenFw.c > index 246deb0..af60c92 100644 > --- a/BaseTools/Source/C/GenFw/GenFw.c > +++ b/BaseTools/Source/C/GenFw/GenFw.c > @@ -2813,10 +2813,11 @@ Returns: > // > // Get Debug, Export and Resource EntryTable RVA address. > // Resource Directory entry need to review. > // > Optional32Hdr = (EFI_IMAGE_OPTIONAL_HEADER32 *) ((UINT8*) FileHdr + sizeof (EFI_IMAGE_FILE_HEADER)); > + Optional64Hdr = (EFI_IMAGE_OPTIONAL_HEADER64 *) ((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; > @@ -2833,11 +2834,10 @@ Returns: > Optional32Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].Size = 0; > Optional32Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress = 0; > } > } > } else { > - Optional64Hdr = (EFI_IMAGE_OPTIONAL_HEADER64 *) ((UINT8*) FileHdr + sizeof (EFI_IMAGE_FILE_HEADER)); > SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) Optional64Hdr + FileHdr->SizeOfOptionalHeader); > if (Optional64Hdr->NumberOfRvaAndSizes > EFI_IMAGE_DIRECTORY_ENTRY_EXPORT && \ > Optional64Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT].Size != 0) { > ExportDirectoryEntryRva = Optional64Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress; > } > @@ -2907,10 +2907,20 @@ Returns: > RsdsEntry->Unknown = 0; > RsdsEntry->Unknown2 = 0; > RsdsEntry->Unknown3 = 0; > RsdsEntry->Unknown4 = 0; > RsdsEntry->Unknown5 = 0; > + } else if (RsdsEntry->Signature == CODEVIEW_SIGNATURE_MTOC) { > + // MTOC sets DebugDirectoryEntrySize to size of the .debug section, so fix it. > + if (!ZeroDebugFlag) { > + if (Optional32Hdr->Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { > + Optional32Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); > + } else { > + Optional64Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); > + } > + } > + break; > } > } > } > } > > -- > 2.6.1.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel