public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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


  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