public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [BaseTools] Library GUIDs missing from Guid.xref file.
@ 2016-10-27  1:08 Andrew Fish
       [not found] ` <AT5PR84MB01150BA503E56D54D085691CF2AA0@AT5PR84MB0115.NAMPRD84.PROD.OUTLOOK.COM>
  0 siblings, 1 reply; 6+ messages in thread
From: Andrew Fish @ 2016-10-27  1:08 UTC (permalink / raw)
  To: edk2-devel

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/Python/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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BaseTools] Library GUIDs missing from Guid.xref file.
       [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
  0 siblings, 1 reply; 6+ messages in thread
From: Lin, Derek (HPS UEFI Dev) @ 2016-10-27  4:09 UTC (permalink / raw)
  To: edk2-devel@lists.01.org, afish@apple.com

Hi Andrew,

We also see this issue recently. And we have a fix. I've send email patch minutes ago.

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/Python/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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BaseTools] Library GUIDs missing from Guid.xref file.
  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)
  0 siblings, 1 reply; 6+ messages in thread
From: Andrew Fish @ 2016-10-27  5:24 UTC (permalink / raw)
  To: Lin, Derek (HPS UEFI Dev); +Cc: edk2-devel@lists.01.org, Shia, Cinnamon


> 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/Python/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



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BaseTools] Library GUIDs missing from Guid.xref file.
  2016-10-27  5:24     ` Andrew Fish
@ 2016-10-27  5:49       ` Lin, Derek (HPS UEFI Dev)
  2016-10-27  5:52         ` Gao, Liming
  0 siblings, 1 reply; 6+ messages in thread
From: Lin, Derek (HPS UEFI Dev) @ 2016-10-27  5:49 UTC (permalink / raw)
  To: afish@apple.com; +Cc: edk2-devel@lists.01.org, Shia, Cinnamon

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/Python/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



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BaseTools] Library GUIDs missing from Guid.xref file.
  2016-10-27  5:49       ` Lin, Derek (HPS UEFI Dev)
@ 2016-10-27  5:52         ` Gao, Liming
  2016-10-28  2:34           ` Lin, Derek (HPS UEFI Dev)
  0 siblings, 1 reply; 6+ messages in thread
From: Gao, Liming @ 2016-10-27  5:52 UTC (permalink / raw)
  To: Lin, Derek (HPS UEFI Dev), afish@apple.com; +Cc: edk2-devel@lists.01.org

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BaseTools] Library GUIDs missing from Guid.xref file.
  2016-10-27  5:52         ` Gao, Liming
@ 2016-10-28  2:34           ` Lin, Derek (HPS UEFI Dev)
  0 siblings, 0 replies; 6+ messages in thread
From: Lin, Derek (HPS UEFI Dev) @ 2016-10-28  2:34 UTC (permalink / raw)
  To: Gao, Liming, afish@apple.com; +Cc: edk2-devel@lists.01.org

That make sense to me, I will update patch to remove it, and not change order.

Thanks,
Derek

-----Original Message-----
From: Gao, Liming [mailto:liming.gao@intel.com] 
Sent: Thursday, October 27, 2016 1:53 PM
To: Lin, Derek (HPS UEFI Dev) <derek.lin2@hpe.com>; afish@apple.com
Cc: edk2-devel@lists.01.org
Subject: RE: [edk2] [BaseTools] Library GUIDs missing from Guid.xref file.

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-10-28  2:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2016-10-28  2:34           ` Lin, Derek (HPS UEFI Dev)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox