From 1d802e234e813a6726f4c6fd161ae9bd146bc552 Mon Sep 17 00:00:00 2001 From: Yunhua Feng Date: Tue, 31 Jul 2018 09:44:41 +0800 Subject: [PATCH] BaseTools: Guid.xref doesn't specify the correct GUID value for Driver In DSC, we can define the driver with the different FILE GUID. So this driver name and its FILE GUID should also be listed in Build output Guid.xref. But now, Guid.xref still lists the driver MODULE_GUID. The case in Platform.dsc: MdeModulePkg/Universal/DriverSampleDxe/DriverSampleDxe.inf { FILE_GUID = 3A4A354F-6935-40fa-B19C-500EEEBF0BC2 PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf } Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng Reviewed-by: Yonghong Zhu --- BaseTools/Source/Python/GenFds/GenFds.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/Python/GenFds/GenFds.py b/BaseTools/Source/Python/GenFds/GenFds.py index a7c1e6c853..156aae1d0e 100644 --- a/BaseTools/Source/Python/GenFds/GenFds.py +++ b/BaseTools/Source/Python/GenFds/GenFds.py @@ -605,6 +605,11 @@ class GenFds : GuidDict = {} ModuleList = [] FileGuidList = [] + GuidPattern = re.compile("\s*([0-9a-fA-F]){8}-" + "([0-9a-fA-F]){4}-" + "([0-9a-fA-F]){4}-" + "([0-9a-fA-F]){4}-" + "([0-9a-fA-F]){12}\s*") for Arch in ArchList: PlatformDataBase = BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag] for ModuleFile in PlatformDataBase.Modules: @@ -613,7 +618,11 @@ class GenFds : continue else: ModuleList.append(Module) - GuidXRefFile.write("%s %s\n" % (Module.Guid, Module.BaseName)) + GuidMatch = GuidPattern.match(ModuleFile.BaseName) + if GuidMatch is not None: + GuidXRefFile.write("%s %s\n" % (ModuleFile.BaseName, Module.BaseName)) + else: + 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(): -- 2.39.5