BaseTools: Fix the *B and *F Flag display for Structure Pcd

Because of we newly add the PcdFieldValueFromComm and
PcdFieldValueFromFdf in early parser phase, so in the report we use
the saved value in this two variables to print it.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yonghong Zhu 2018-10-19 15:10:30 +08:00
parent 0dab57708d
commit a6a326770b

View File

@ -1074,9 +1074,13 @@ class PcdReport(object):
Pcd.DatumType = Pcd.StructName Pcd.DatumType = Pcd.StructName
if TypeName in ('DYNVPD', 'DEXVPD'): if TypeName in ('DYNVPD', 'DEXVPD'):
Pcd.SkuInfoList = SkuInfoList Pcd.SkuInfoList = SkuInfoList
if Pcd.PcdFieldValueFromComm: if Pcd.PcdValueFromComm or Pcd.PcdFieldValueFromComm:
BuildOptionMatch = True BuildOptionMatch = True
DecMatch = False DecMatch = False
elif Pcd.PcdValueFromFdf or Pcd.PcdFieldValueFromFdf:
DscDefaultValue = True
DscMatch = True
DecMatch = False
elif Pcd.SkuOverrideValues: elif Pcd.SkuOverrideValues:
DscOverride = False DscOverride = False
if Pcd.DefaultFromDSC: if Pcd.DefaultFromDSC:
@ -1266,6 +1270,7 @@ class PcdReport(object):
Value = "0x{:X} ({})".format(int(Value, 0), Value) Value = "0x{:X} ({})".format(int(Value, 0), Value)
FileWrite(File, ' %-*s : %6s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', Value)) FileWrite(File, ' %-*s : %6s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', Value))
if IsStructure: if IsStructure:
FiledOverrideFlag = False
OverrideValues = Pcd.SkuOverrideValues OverrideValues = Pcd.SkuOverrideValues
if OverrideValues: if OverrideValues:
for Data in OverrideValues.values(): for Data in OverrideValues.values():
@ -1273,7 +1278,11 @@ class PcdReport(object):
if Struct: if Struct:
OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0]) OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])
self.PrintStructureInfo(File, OverrideFieldStruct) self.PrintStructureInfo(File, OverrideFieldStruct)
FiledOverrideFlag = True
break break
if not FiledOverrideFlag and (Pcd.PcdFieldValueFromComm or Pcd.PcdFieldValueFromFdf):
OverrideFieldStruct = self.OverrideFieldValue(Pcd, {})
self.PrintStructureInfo(File, OverrideFieldStruct)
self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue) self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)
else: else:
FirstPrint = True FirstPrint = True
@ -1393,11 +1402,16 @@ class PcdReport(object):
if TypeName in ('DYNVPD', 'DEXVPD'): if TypeName in ('DYNVPD', 'DEXVPD'):
FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset)) FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))
if IsStructure: if IsStructure:
FiledOverrideFlag = False
OverrideValues = Pcd.SkuOverrideValues[Sku] OverrideValues = Pcd.SkuOverrideValues[Sku]
if OverrideValues: if OverrideValues:
Keys = OverrideValues.keys() Keys = OverrideValues.keys()
OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]]) OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])
self.PrintStructureInfo(File, OverrideFieldStruct) self.PrintStructureInfo(File, OverrideFieldStruct)
FiledOverrideFlag = True
if not FiledOverrideFlag and (Pcd.PcdFieldValueFromComm or Pcd.PcdFieldValueFromFdf):
OverrideFieldStruct = self.OverrideFieldValue(Pcd, {})
self.PrintStructureInfo(File, OverrideFieldStruct)
self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue) self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)
def OverrideFieldValue(self, Pcd, OverrideStruct): def OverrideFieldValue(self, Pcd, OverrideStruct):