From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x22b.google.com (mail-it0-x22b.google.com [IPv6:2607:f8b0:4001:c0b::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id CC43C2095896E for ; Wed, 5 Jul 2017 10:36:11 -0700 (PDT) Received: by mail-it0-x22b.google.com with SMTP id v202so118324549itb.0 for ; Wed, 05 Jul 2017 10:37:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=QQrRujj1ShCliq/FC+nEQ8TgPQtLNzNsyUIbycCuF+8=; b=BUTR61/9S4SUCFvDKUru/XuTwjzbpguUcIwSCmLj98kvnsNnurCzYq3sORUJevs6s1 U12dFSoIF5IkewabYXs1K0pB7z4tyonfjF/987Iu33kDxMi1wEY2FiKQ5/1YBdkwdwlf bGJs573/4P/j68Q+FDpZKoEQ+hGVj2A/k3wHc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=QQrRujj1ShCliq/FC+nEQ8TgPQtLNzNsyUIbycCuF+8=; b=OkAIzVZMc4Avr/9zoOZxmPbD/YttafT7EXT3Tvtmwx9Pif3krQKOXIeM6SGCUb4eXs 2oAUCHxad4qHHLVt8/8jX2tu5UWCW5hzIYyh8m+IqeUgqJLisfBNMpdzC+D7DKb8uavq IoIvxZOtax17b7c4julvjGcSdM+Y2afVS+YpHbem9c0xZTDjn/OITFj4x9Dzy0UuRBcd HxiuzAKFVjLx5S0MJWF9wSjQK5EkJI5JdgVC52oMlkut2PjMms6wWxiWBpW3W//h8EUX Lk9bjK74gkUfIiE4uBBbkwneS0Mftb2Jkwn34VilCq5PzIvFXXe6RCuQofNBbDtkzNdy IDXg== X-Gm-Message-State: AIVw110p1XFq4T8/FndLFVFcqxiKOJWauG0cmDn4gzbBnf3lzzYuehTA xb7T5dTvwTPcHfBxMNGQuYkXqVMdQsfu X-Received: by 10.36.219.132 with SMTP id c126mr20297710itg.73.1499276270764; Wed, 05 Jul 2017 10:37:50 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.134.134 with HTTP; Wed, 5 Jul 2017 10:37:50 -0700 (PDT) In-Reply-To: References: <20170705164218.25814-1-lersek@redhat.com> From: Ard Biesheuvel Date: Wed, 5 Jul 2017 18:37:50 +0100 Message-ID: To: Laszlo Ersek Cc: edk2-devel-01 , Gerd Hoffmann , Leif Lindholm , Liming Gao , Yonghong Zhu Subject: Re: [PATCH] BaseTools/GenFw: work around GNU Binutils bug wrt. DebugDirectoryEntrySize 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: Wed, 05 Jul 2017 17:36:12 -0000 Content-Type: text/plain; charset="UTF-8" On 5 July 2017 at 18:33, Laszlo Ersek wrote: > On 07/05/17 18:45, Ard Biesheuvel wrote: >> On 5 July 2017 at 17:42, Laszlo Ersek wrote: >>> GNU Binutils produce a PE debug directory with one >> >> This sentence already confuses me. This crash is reproducible on ARM, >> but the ARM toolchains are strictly ELF based, and all PE/COFF data >> structures are created by GenFw itself, never by binutils. So I don't >> see how this could be a binutils bug. > > Geez, you are totally right. From > "BaseTools/Source/C/GenFw/Elf64Convert.c": > > >> STATIC >> VOID >> WriteDebug64 ( >> VOID >> ) >> { >> UINT32 Len; >> EFI_IMAGE_OPTIONAL_HEADER_UNION *NtHdr; >> EFI_IMAGE_DATA_DIRECTORY *DataDir; >> EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *Dir; >> EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY *Nb10; >> >> Len = strlen(mInImageName) + 1; >> >> Dir = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY*)(mCoffFile + mDebugOffset); >> Dir->Type = EFI_IMAGE_DEBUG_TYPE_CODEVIEW; >> Dir->SizeOfData = sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) + Len; >> Dir->RVA = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); >> Dir->FileOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); >> >> Nb10 = (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY*)(Dir + 1); >> Nb10->Signature = CODEVIEW_SIGNATURE_NB10; >> strcpy ((char *)(Nb10 + 1), mInImageName); >> >> >> NtHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(mCoffFile + mNtHdrOffset); >> DataDir = &NtHdr->Pe32Plus.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG]; >> DataDir->VirtualAddress = mDebugOffset; >> DataDir->Size = Dir->SizeOfData + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); >> } > > The last assignment has the bug. It should be > > DataDir->Size = sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); > OK, I will take that as an affirmative answer to my question. Are you sending a patch?