From: "Gao, Liming" <liming.gao@intel.com>
To: "Lin, Derek (HPS UEFI Dev)" <derek.lin2@hpe.com>,
"afish@apple.com" <afish@apple.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [BaseTools] Library GUIDs missing from Guid.xref file.
Date: Thu, 27 Oct 2016 05:52:39 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14B49A6AC@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <DF4PR84MB002504BA2AB953A03A8A490EC2AA0@DF4PR84MB0025.NAMPRD84.PROD.OUTLOOK.COM>
I agree with Andrew to only add the missing Ppi/Protocol/Guid used in Library INF file.
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Lin,
> Derek (HPS UEFI Dev)
> Sent: Thursday, October 27, 2016 1:50 PM
> To: afish@apple.com
> Cc: edk2-devel@lists.01.org
> Subject: Re: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
>
> Andrew,
>
> The ModuleGuidDict was not for performance, it's because Arch IA32 X64
> have same library name/FILE_GUID pair, for not duplicate it.
> You are right the patch add library FILE_GUID but they are not end up in the
> ROM, I'm ok remove it or not.
>
> Feel free to update the patch.
>
> Thanks,
> Derek
>
> -----Original Message-----
> From: afish@apple.com [mailto:afish@apple.com]
> Sent: Thursday, October 27, 2016 1:25 PM
> To: Lin, Derek (HPS UEFI Dev) <derek.lin2@hpe.com>
> Cc: edk2-devel@lists.01.org; Shia, Cinnamon <cinnamon.shia@hpe.com>
> Subject: Re: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
>
>
> > On Oct 26, 2016, at 9:09 PM, Lin, Derek (HPS UEFI Dev)
> <derek.lin2@hpe.com> wrote:
> >
> > Hi Andrew,
> >
> > We also see this issue recently. And we have a fix. I've send email patch
> minutes ago.
> >
>
> Derek,
>
> Thanks for sharing the fix.
>
> I noticed it introduced a build failure for a badly formed library INF file. I
> assume that means this fix is pulling in libraries that are in the DSC file, but
> not currently being built? That is not really a problem as it means you have
> too many GUID vs. not enough.
>
> I also noticed that your fix adds the FILE_GUID values for all the libraries. The
> FILE_GUID values for the any PEIM, DXE/UEFI driver that end up in an FV will
> be present in the ROM, but the library values do not end up in the ROM. Also
> by changing the code to use a Python dictionary the order of everything
> changed. I had a debugger command that would just dump out the
> FILE_GUDs, so it would be good to maintain the old behavior.
>
> GuidDict = {}
> for Arch in ArchList:
> PlatformDataBase =
> BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch,
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> - for ModuleFile in PlatformDataBase.Modules:
> + for ModuleFile in [x for x in PlatformDataBase.Modules] + [x for x in
> PlatformDataBase.LibraryInstances]:
> Module = BuildDb.BuildObject[ModuleFile, Arch,
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> - GuidXRefFile.write("%s %s\n" % (Module.Guid, Module.BaseName))
> + if ModuleFile in PlatformDataBase.Modules:
> + GuidXRefFile.write("%s %s\n" % (Module.Guid,
> Module.BaseName))
> for key, item in Module.Protocols.items():
> GuidDict[key] = item
> for key, item in Module.Guids.items():
>
> If your adding ModuleGuidDict was a performance fix, I guess I could just
> make it a list to keep order.
>
> Thanks,
>
> Andrew Fish
>
> > Thanks,
> > Derek
> >
> > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Andrew Fish
> > Sent: Thursday, October 27, 2016 9:08 AM
> > To: edk2-devel <edk2-devel@lists.01.org>
> > Subject: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.
> >
> > I noticed if a GUID (PPI & Protocol) was only used via a library it does not
> end up in the Guid.xref file.
> >
> > It looks to me like this code is only extracting the GUIDs from the Drivers
> INF file and the GUIDs defined in dependent libraries are skipped?
> >
> >
> >
> https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Python/
> GenFds/GenFds.py#L701
> <https://github.com/tianocore/edk2/blob/master/BaseTools/Source/Pytho
> n/GenFds/GenFds.py#L701>
> >
> > for Arch in ArchList:
> > PlatformDataBase =
> BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch,
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> > for ModuleFile in PlatformDataBase.Modules:
> > Module = BuildDb.BuildObject[ModuleFile, Arch,
> GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
> > GuidXRefFile.write("%s %s\n" % (Module.Guid,
> Module.BaseName))
> > for key, item in Module.Protocols.items():
> > GuidDict[key] = item
> > for key, item in Module.Guids.items():
> > GuidDict[key] = item
> > for key, item in Module.Ppis.items():
> > GuidDict[key] = item
> >
> >
> > Does anyone know how to extract the info from the dependent libs?
> >
> > I have an lldb type formatter for EFI_GUID that will print out the GUID C
> name so I noticed when some of them went missing.
> >
> > Thanks,
> >
> > Andrew Fish
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2016-10-27 5:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 1:08 [BaseTools] Library GUIDs missing from Guid.xref file Andrew Fish
[not found] ` <AT5PR84MB01150BA503E56D54D085691CF2AA0@AT5PR84MB0115.NAMPRD84.PROD.OUTLOOK.COM>
2016-10-27 4:09 ` Lin, Derek (HPS UEFI Dev)
2016-10-27 5:24 ` Andrew Fish
2016-10-27 5:49 ` Lin, Derek (HPS UEFI Dev)
2016-10-27 5:52 ` Gao, Liming [this message]
2016-10-28 2:34 ` Lin, Derek (HPS UEFI Dev)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14B49A6AC@shsmsx102.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox