From e5cf919889b92a5fb89638ea10cebbb3ef59b5c7 Mon Sep 17 00:00:00 2001 From: Yonghong Zhu Date: Tue, 26 Jul 2016 15:17:15 +0800 Subject: BaseTools: Keep the Pcd order in the Asbuilt Inf is same with Source The original behavior is that in the Asbuilt inf Pcd's order is base on the Pcd's offset. Now we change the order to keep it is same with the Pcd order in the source inf file. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/AutoGen/AutoGen.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'BaseTools') diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 9c548be..921b979 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -3605,13 +3605,13 @@ class ModuleAutoGen(AutoGen): # Find all DynamicEx and PatchableInModule PCDs used by this module and dependent libraries # Also find all packages that the DynamicEx PCDs depend on Pcds = [] - PatchablePcds = {} + PatchablePcds = [] Packages = [] PcdCheckList = [] PcdTokenSpaceList = [] for Pcd in self.ModulePcdList + self.LibraryPcdList: if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE: - PatchablePcds[Pcd.TokenCName] = Pcd + PatchablePcds += [Pcd] PcdCheckList.append((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, 'PatchableInModule')) elif Pcd.Type in GenC.gDynamicExPcd: if Pcd not in Pcds: @@ -3764,15 +3764,17 @@ class ModuleAutoGen(AutoGen): os.path.join(self.OutputDir, self.Name + '.efi') ) if PatchList: - for PatchPcd in PatchList: - if PatchPcd[0] in PatchablePcds: - key = PatchPcd[0] - elif PatchPcd[0] + '_PatchableInModule' in PatchablePcds: - key = PatchPcd[0] + '_PatchableInModule' + for Pcd in PatchablePcds: + TokenCName = Pcd.TokenCName + for PcdItem in GlobalData.MixedPcd: + if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]: + TokenCName = PcdItem[0] + break + for PatchPcd in PatchList: + if TokenCName == PatchPcd[0]: + break else: continue - Pcd = PatchablePcds[key] - TokenCName = PatchPcd[0] PcdValue = '' if Pcd.DatumType != 'VOID*': HexFormat = '0x%02x' -- cgit v1.1