BaseTools: enable FixedAtBuild (VOID*) PCD use in the [DEPEX] section
V3: Add some invalid type and datum check V2: limit the PCD used in the [Depex] section should be used in the module The PCD item used in INF [Depex] section must be defined as FixedAtBuild type and VOID* datum type, and the size of the PCD must be 16 bytes. Fixes: https://bugzilla.tianocore.org/show_bug.cgi?id=443 Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
committed by
Yonghong Zhu
parent
d9e206d4bf
commit
a10def9165
@ -22,6 +22,8 @@ from struct import pack
|
||||
from Common.BuildToolError import *
|
||||
from Common.Misc import SaveFileOnChange
|
||||
from Common.Misc import GuidStructureStringToGuidString
|
||||
from Common.Misc import GuidStructureByteArrayToGuidString
|
||||
from Common.Misc import GuidStringToGuidStructureString
|
||||
from Common import EdkLogger as EdkLogger
|
||||
from Common.BuildVersion import gBUILD_VERSION
|
||||
from Common.DataType import *
|
||||
@ -333,6 +335,10 @@ class DependencyExpression:
|
||||
def GetGuidValue(self, Guid):
|
||||
GuidValueString = Guid.replace("{", "").replace("}", "").replace(" ", "")
|
||||
GuidValueList = GuidValueString.split(",")
|
||||
if len(GuidValueList) != 11 and len(GuidValueList) == 16:
|
||||
GuidValueString = GuidStringToGuidStructureString(GuidStructureByteArrayToGuidString(Guid))
|
||||
GuidValueString = GuidValueString.replace("{", "").replace("}", "").replace(" ", "")
|
||||
GuidValueList = GuidValueString.split(",")
|
||||
if len(GuidValueList) != 11:
|
||||
EdkLogger.error("GenDepex", PARSER_ERROR, "Invalid GUID value string or opcode: %s" % Guid)
|
||||
return pack("1I2H8B", *(int(value, 16) for value in GuidValueList))
|
||||
|
Reference in New Issue
Block a user