X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FGenFds%2FFdfParser.py;h=e2e6df71673a6129f84e37b97c535912d203d09e;hp=6baf875833a8ce4858f8876ce9861ff68963f18a;hb=543f5ac30facfbb40eafb2b4908649a427784080;hpb=656d2539be34ea0ce356857ffd4f9decdf0476b2
diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py
index 6baf875833..e2e6df7167 100644
--- a/BaseTools/Source/Python/GenFds/FdfParser.py
+++ b/BaseTools/Source/Python/GenFds/FdfParser.py
@@ -16,6 +16,7 @@
##
# Import Modules
#
+from __future__ import print_function
import re
import Fd
@@ -48,12 +49,12 @@ from GenFdsGlobalVariable import GenFdsGlobalVariable
from Common.BuildToolError import *
from Common import EdkLogger
from Common.Misc import PathClass
-from Common.String import NormPath
+from Common.StringUtils import NormPath
import Common.GlobalData as GlobalData
from Common.Expression import *
from Common import GlobalData
from Common.DataType import *
-from Common.String import ReplaceMacro
+from Common.StringUtils import ReplaceMacro
import uuid
from Common.Misc import tdict
from Common.MultipleWorkspace import MultipleWorkspace as mws
@@ -82,13 +83,12 @@ T_CHAR_BACKSLASH, T_CHAR_DOUBLE_QUOTE, T_CHAR_SINGLE_QUOTE, T_CHAR_STAR, T_CHAR_
SEPERATOR_TUPLE = ('=', '|', ',', '{', '}')
RegionSizePattern = re.compile("\s*(?P(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P(?:0x|0X)?[a-fA-F0-9]+)\s*")
-RegionSizeGuidPattern = re.compile("\s*(?P\w+\.\w+)\s*\|\s*(?P\w+\.\w+)\s*")
-RegionOffsetPcdPattern = re.compile("\s*(?P\w+\.\w+)\s*$")
+RegionSizeGuidPattern = re.compile("\s*(?P\w+\.\w+[\.\w\[\]]*)\s*\|\s*(?P\w+\.\w+[\.\w\[\]]*)\s*")
+RegionOffsetPcdPattern = re.compile("\s*(?P\w+\.\w+[\.\w\[\]]*)\s*$")
ShortcutPcdPattern = re.compile("\s*\w+\s*=\s*(?P(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P\w+\.\w+)\s*")
BaseAddrValuePattern = re.compile('^0[xX][0-9a-fA-F]+')
FileExtensionPattern = re.compile(r'([a-zA-Z][a-zA-Z0-9]*)')
TokenFindPattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')
-
AllIncludeFileList = []
# Get the closest parent
@@ -172,7 +172,7 @@ class IncludeFileProfile :
self.InsertAdjust = 0
self.IncludeFileList = []
self.Level = 1 # first level include file
-
+
def GetTotalLines(self):
TotalLines = self.InsertAdjust + len(self.FileLinesList)
@@ -190,7 +190,7 @@ class IncludeFileProfile :
def GetLineInFile(self, Line):
if not self.IsLineInFile (Line):
return (self.FileName, -1)
-
+
InsertedLines = self.InsertStartLineNumber
for Profile in self.IncludeFileList:
@@ -225,14 +225,15 @@ class FileProfile :
except:
EdkLogger.error("FdfParser", FILE_OPEN_FAILURE, ExtraData=FileName)
-
+ self.FileName = FileName
self.PcdDict = {}
+ self.PcdLocalDict = {}
self.InfList = []
self.InfDict = {'ArchTBD':[]}
# ECC will use this Dict and List information
self.PcdFileLineDict = {}
self.InfFileLineList = []
-
+
self.FdDict = {}
self.FdNameNotSet = False
self.FvDict = {}
@@ -338,11 +339,11 @@ class FdfParser:
#
# @param self The object pointer
# @param DestLine Optional new destination line number.
- # @param DestOffset Optional new destination offset.
+ # @param DestOffset Optional new destination offset.
#
- def Rewind(self, DestLine = 1, DestOffset = 0):
- self.CurrentLineNumber = DestLine
- self.CurrentOffsetWithinLine = DestOffset
+ def Rewind(self, DestLine = 1, DestOffset = 0):
+ self.CurrentLineNumber = DestLine
+ self.CurrentOffsetWithinLine = DestOffset
## __UndoOneChar() method
#
@@ -458,7 +459,7 @@ class FdfParser:
if MacroName.startswith('!'):
NotFlag = True
MacroName = MacroName[1:].strip()
-
+
if not MacroName.startswith('$(') or not MacroName.endswith(')'):
raise Warning("Macro name expected(Please use '$(%(Token)s)' if '%(Token)s' is a macro.)" % {"Token" : MacroName},
self.FileName, self.CurrentLineNumber)
@@ -598,7 +599,7 @@ class FdfParser:
# @param self The object pointer
#
def PreprocessIncludeFile(self):
- # nested include support
+ # nested include support
Processed = False
MacroDict = {}
while self.__GetNextToken():
@@ -663,7 +664,7 @@ class FdfParser:
IncludedFile1 = PathClass(IncludedFile, GlobalData.gWorkspace)
ErrorCode = IncludedFile1.Validate()[0]
if ErrorCode != 0:
- raise Warning("The include file does not exist under below directories: \n%s\n%s\n%s\n"%(os.path.dirname(self.FileName), PlatformDir, GlobalData.gWorkspace),
+ raise Warning("The include file does not exist under below directories: \n%s\n%s\n%s\n"%(os.path.dirname(self.FileName), PlatformDir, GlobalData.gWorkspace),
self.FileName, self.CurrentLineNumber)
if not IsValidInclude (IncludedFile1.Path, self.CurrentLineNumber):
@@ -706,18 +707,18 @@ class FdfParser:
Processed = False
# Preprocess done.
self.Rewind()
-
+
@staticmethod
def __GetIfListCurrentItemStat(IfList):
if len(IfList) == 0:
return True
-
+
for Item in IfList:
if Item[1] == False:
return False
-
+
return True
-
+
## PreprocessConditionalStatement() method
#
# Preprocess conditional statement.
@@ -777,7 +778,7 @@ class FdfParser:
Macro = self.__Token
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
Value = self.__GetExpression()
self.__SetMacroValue(Macro, Value)
self.__WipeOffArea.append(((DefineLine, DefineOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
@@ -786,7 +787,7 @@ class FdfParser:
continue
SetLine = self.CurrentLineNumber - 1
SetOffset = self.CurrentOffsetWithinLine - len('SET')
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
PcdName = "%s.%s" % (PcdPair[1], PcdPair[0])
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
@@ -797,6 +798,7 @@ class FdfParser:
self.__PcdDict[PcdName] = Value
self.Profile.PcdDict[PcdPair] = Value
+ self.SetPcdLocalation(PcdPair)
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[PcdPair] = FileLineTuple
@@ -807,7 +809,7 @@ class FdfParser:
CondLabel = self.__Token
Expression = self.__GetExpression()
-
+
if CondLabel == '!if':
ConditionSatisfied = self.__EvaluateConditional(Expression, IfList[-1][0][0] + 1, 'eval')
else:
@@ -818,7 +820,7 @@ class FdfParser:
BranchDetermined = ConditionSatisfied
IfList[-1] = [IfList[-1][0], ConditionSatisfied, BranchDetermined]
if ConditionSatisfied:
- self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
+ self.__WipeOffArea.append((IfList[-1][0], (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))
elif self.__Token in ('!elseif', '!else'):
ElseStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self.__Token))
if len(IfList) <= 0:
@@ -890,7 +892,7 @@ class FdfParser:
ScopeMacro = self.__MacroDict[TAB_COMMON, TAB_COMMON, TAB_COMMON]
if ScopeMacro:
MacroDict.update(ScopeMacro)
-
+
# Section macro
ScopeMacro = self.__MacroDict[
self.__CurSection[0],
@@ -904,7 +906,7 @@ class FdfParser:
MacroDict.update(GlobalData.gCommandLineDefines)
if GlobalData.BuildOptionPcd:
for Item in GlobalData.BuildOptionPcd:
- if type(Item) is tuple:
+ if isinstance(Item, tuple):
continue
PcdName, TmpValue = Item.split("=")
TmpValue = BuildOptionValue(TmpValue, {})
@@ -914,7 +916,6 @@ class FdfParser:
return MacroDict
def __EvaluateConditional(self, Expression, Line, Op = None, Value = None):
- FileLineTuple = GetRealFileLine(self.FileName, Line)
MacroPcdDict = self.__CollectMacroPcd()
if Op == 'eval':
try:
@@ -922,16 +923,16 @@ class FdfParser:
return ValueExpression(Expression, MacroPcdDict)(True)
else:
return ValueExpression(Expression, MacroPcdDict)()
- except WrnExpression, Excpt:
- #
+ except WrnExpression as Excpt:
+ #
# Catch expression evaluation warning here. We need to report
# the precise number of line and return the evaluation result
#
EdkLogger.warn('Parser', "Suspicious expression: %s" % str(Excpt),
- File=self.FileName, ExtraData=self.__CurrentLine(),
+ File=self.FileName, ExtraData=self.__CurrentLine(),
Line=Line)
return Excpt.result
- except Exception, Excpt:
+ except Exception as Excpt:
if hasattr(Excpt, 'Pcd'):
if Excpt.Pcd in GlobalData.gPlatformOtherPcds:
Info = GlobalData.gPlatformOtherPcds[Excpt.Pcd]
@@ -939,15 +940,15 @@ class FdfParser:
" it must be defined in a [PcdsFixedAtBuild] or [PcdsFeatureFlag] section"
" of the DSC file (%s), and it is currently defined in this section:"
" %s, line #: %d." % (Excpt.Pcd, GlobalData.gPlatformOtherPcds['DSCFILE'], Info[0], Info[1]),
- *FileLineTuple)
+ self.FileName, Line)
else:
raise Warning("PCD (%s) is not defined in DSC file (%s)" % (Excpt.Pcd, GlobalData.gPlatformOtherPcds['DSCFILE']),
- *FileLineTuple)
+ self.FileName, Line)
else:
- raise Warning(str(Excpt), *FileLineTuple)
+ raise Warning(str(Excpt), self.FileName, Line)
else:
if Expression.startswith('$(') and Expression[-1] == ')':
- Expression = Expression[2:-1]
+ Expression = Expression[2:-1]
return Expression in MacroPcdDict
## __IsToken() method
@@ -1049,6 +1050,29 @@ class FdfParser:
return False
+ def __GetNextPcdWord(self):
+ self.__SkipWhiteSpace()
+ if self.__EndOfFile():
+ return False
+
+ TempChar = self.__CurrentChar()
+ StartPos = self.CurrentOffsetWithinLine
+ if (TempChar >= 'a' and TempChar <= 'z') or (TempChar >= 'A' and TempChar <= 'Z') or TempChar == '_' or TempChar == '[' or TempChar == ']':
+ self.__GetOneChar()
+ while not self.__EndOfLine():
+ TempChar = self.__CurrentChar()
+ if (TempChar >= 'a' and TempChar <= 'z') or (TempChar >= 'A' and TempChar <= 'Z') \
+ or (TempChar >= '0' and TempChar <= '9') or TempChar == '_' or TempChar == '-' or TempChar == '[' or TempChar == ']':
+ self.__GetOneChar()
+
+ else:
+ break
+
+ self.__Token = self.__CurrentLine()[StartPos : self.CurrentOffsetWithinLine]
+ return True
+
+ return False
+
## __GetNextToken() method
#
# Get next token unit before a seperator
@@ -1134,21 +1158,20 @@ class FdfParser:
@staticmethod
def __Verify(Name, Value, Scope):
- if Scope in [TAB_UINT64, TAB_UINT8]:
- ValueNumber = 0
- try:
- ValueNumber = int (Value, 0)
- except:
- EdkLogger.error("FdfParser", FORMAT_INVALID, "The value is not valid dec or hex number for %s." % Name)
- if ValueNumber < 0:
- EdkLogger.error("FdfParser", FORMAT_INVALID, "The value can't be set to negative value for %s." % Name)
- if Scope == TAB_UINT64:
- if ValueNumber >= 0x10000000000000000:
- EdkLogger.error("FdfParser", FORMAT_INVALID, "Too large value for %s." % Name)
- if Scope == TAB_UINT8:
- if ValueNumber >= 0x100:
- EdkLogger.error("FdfParser", FORMAT_INVALID, "Too large value for %s." % Name)
- return True
+ # value verification only applies to numeric values.
+ if Scope not in TAB_PCD_NUMERIC_TYPES:
+ return
+
+ ValueNumber = 0
+ try:
+ ValueNumber = int(Value, 0)
+ except:
+ EdkLogger.error("FdfParser", FORMAT_INVALID, "The value is not valid dec or hex number for %s." % Name)
+ if ValueNumber < 0:
+ EdkLogger.error("FdfParser", FORMAT_INVALID, "The value can't be set to negative value for %s." % Name)
+ if ValueNumber > MAX_VAL_TYPE[Scope]:
+ EdkLogger.error("FdfParser", FORMAT_INVALID, "Too large value for %s." % Name)
+ return True
## __UndoToken() method
#
@@ -1183,13 +1206,6 @@ class FdfParser:
self.__GetOneChar()
- def __IsHex(self, HexStr):
- if not HexStr.upper().startswith("0X"):
- return False
- if len(self.__Token) <= 2:
- return False
- return True if all(x in string.hexdigits for x in HexStr[2:]) else False
-
## __GetNextHexNumber() method
#
# Get next HEX data before a seperator
@@ -1202,7 +1218,7 @@ class FdfParser:
def __GetNextHexNumber(self):
if not self.__GetNextToken():
return False
- if self.__IsHex(self.__Token):
+ if gHexPatternAll.match(self.__Token):
return True
else:
self.__UndoToken()
@@ -1248,6 +1264,26 @@ class FdfParser:
return (pcdCName, pcdTokenSpaceCName)
+ def __GetNextPcdSettings(self):
+ if not self.__GetNextWord():
+ raise Warning("expected format of .", self.FileName, self.CurrentLineNumber)
+ pcdTokenSpaceCName = self.__Token
+
+ if not self.__IsToken( "."):
+ raise Warning("expected format of .", self.FileName, self.CurrentLineNumber)
+
+ if not self.__GetNextWord():
+ raise Warning("expected format of .", self.FileName, self.CurrentLineNumber)
+ pcdCName = self.__Token
+
+ Fields = []
+ while self.__IsToken("."):
+ if not self.__GetNextPcdWord():
+ raise Warning("expected format of .", self.FileName, self.CurrentLineNumber)
+ Fields.append(self.__Token)
+
+ return (pcdCName, pcdTokenSpaceCName,".".join(Fields))
+
## __GetStringData() method
#
# Get string contents quoted in ""
@@ -1370,13 +1406,14 @@ class FdfParser:
try:
self.Preprocess()
+ self.__GetError()
#
# Keep processing sections of the FDF until no new sections or a syntax error is found
#
while self.__GetFd() or self.__GetFv() or self.__GetFmp() or self.__GetCapsule() or self.__GetVtf() or self.__GetRule() or self.__GetOptionRom():
pass
- except Warning, X:
+ except Warning as X:
self.__UndoToken()
#'\n\tGot Token: \"%s\" from File %s\n' % (self.__Token, FileLineTuple[0]) + \
# At this point, the closest parent would be the included file itself
@@ -1439,9 +1476,9 @@ class FdfParser:
self.__UndoToken()
self.__GetSetStatement(None)
continue
-
+
Macro = self.__Token
-
+
if not self.__IsToken("="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
if not self.__GetNextToken() or self.__Token.startswith('['):
@@ -1450,6 +1487,17 @@ class FdfParser:
return False
+ ##__GetError() method
+ def __GetError(self):
+ #save the Current information
+ CurrentLine = self.CurrentLineNumber
+ CurrentOffset = self.CurrentOffsetWithinLine
+ while self.__GetNextToken():
+ if self.__Token == TAB_ERROR:
+ EdkLogger.error('FdfParser', ERROR_STATEMENT, self.__CurrentLine().replace(TAB_ERROR, '', 1), File=self.FileName, Line=self.CurrentLineNumber)
+ self.CurrentLineNumber = CurrentLine
+ self.CurrentOffsetWithinLine = CurrentOffset
+
## __GetFd() method
#
# Get FD section contents and store its data into FD dictionary of self.Profile
@@ -1488,7 +1536,7 @@ class FdfParser:
else:
raise Warning("expected FdName in [FD.] section", self.FileName, self.CurrentLineNumber)
self.CurrentFdName = FdName.upper()
-
+
if self.CurrentFdName in self.Profile.FdDict:
raise Warning("Unexpected the same FD name", self.FileName, self.CurrentLineNumber)
@@ -1563,6 +1611,9 @@ class FdfParser:
return True
+ def SetPcdLocalation(self,pcdpair):
+ self.Profile.PcdLocalDict[pcdpair] = (self.Profile.FileName,self.CurrentLineNumber)
+
## __GetTokenStatements() method
#
# Get token statements
@@ -1574,16 +1625,17 @@ class FdfParser:
if self.__IsKeyword( "BaseAddress"):
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
if not self.__GetNextHexNumber():
raise Warning("expected Hex base address", self.FileName, self.CurrentLineNumber)
-
+
Obj.BaseAddress = self.__Token
-
+
if self.__IsToken( "|"):
- pcdPair = self.__GetNextPcdName()
+ pcdPair = self.__GetNextPcdSettings()
Obj.BaseAddressPcd = pcdPair
self.Profile.PcdDict[pcdPair] = Obj.BaseAddress
+ self.SetPcdLocalation(pcdPair)
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[pcdPair] = FileLineTuple
return True
@@ -1591,15 +1643,16 @@ class FdfParser:
if self.__IsKeyword( "Size"):
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
if not self.__GetNextHexNumber():
raise Warning("expected Hex size", self.FileName, self.CurrentLineNumber)
Size = self.__Token
if self.__IsToken( "|"):
- pcdPair = self.__GetNextPcdName()
+ pcdPair = self.__GetNextPcdSettings()
Obj.SizePcd = pcdPair
self.Profile.PcdDict[pcdPair] = Size
+ self.SetPcdLocalation(pcdPair)
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[pcdPair] = FileLineTuple
Obj.Size = long(Size, 0)
@@ -1608,13 +1661,13 @@ class FdfParser:
if self.__IsKeyword( "ErasePolarity"):
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
if not self.__GetNextToken():
raise Warning("expected Erase Polarity", self.FileName, self.CurrentLineNumber)
-
+
if self.__Token != "1" and self.__Token != "0":
raise Warning("expected 1 or 0 Erase Polarity", self.FileName, self.CurrentLineNumber)
-
+
Obj.ErasePolarity = self.__Token
return True
@@ -1662,7 +1715,7 @@ class FdfParser:
IsBlock = False
while self.__GetBlockStatement(Obj):
IsBlock = True
-
+
Item = Obj.BlockSizeList[-1]
if Item[0] is None or Item[1] is None:
raise Warning("expected block statement", self.FileName, self.CurrentLineNumber)
@@ -1690,9 +1743,10 @@ class FdfParser:
BlockSize = self.__Token
BlockSizePcd = None
if self.__IsToken( "|"):
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
BlockSizePcd = PcdPair
self.Profile.PcdDict[PcdPair] = BlockSize
+ self.SetPcdLocalation(PcdPair)
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[PcdPair] = FileLineTuple
BlockSize = long(BlockSize, 0)
@@ -1773,7 +1827,7 @@ class FdfParser:
#
def __GetSetStatement(self, Obj):
if self.__IsKeyword("SET"):
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
@@ -1784,6 +1838,7 @@ class FdfParser:
if Obj:
Obj.SetVarDict[PcdPair] = Value
self.Profile.PcdDict[PcdPair] = Value
+ self.SetPcdLocalation(PcdPair)
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[PcdPair] = FileLineTuple
return True
@@ -1816,7 +1871,7 @@ class FdfParser:
return long(
ValueExpression(Expr,
self.__CollectMacroPcd()
- )(True),0)
+ )(True), 0)
except Exception:
self.SetFileBufferPos(StartPos)
return None
@@ -1831,7 +1886,7 @@ class FdfParser:
# @retval False Not able to find
#
def __GetRegionLayout(self, Fd):
- Offset = self.__CalcRegionExpr()
+ Offset = self.__CalcRegionExpr()
if Offset is None:
return False
@@ -1850,7 +1905,7 @@ class FdfParser:
if not self.__GetNextWord():
return True
- if not self.__Token in ("SET", "FV", "FILE", "DATA", "CAPSULE", "INF"):
+ if not self.__Token in ("SET", BINARY_FILE_TYPE_FV, "FILE", "DATA", "CAPSULE", "INF"):
#
# If next token is a word which is not a valid FV type, it might be part of [PcdOffset[|PcdSize]]
# Or it might be next region's offset described by an expression which starts with a PCD.
@@ -1860,14 +1915,16 @@ class FdfParser:
IsRegionPcd = (RegionSizeGuidPattern.match(self.__CurrentLine()[self.CurrentOffsetWithinLine:]) or
RegionOffsetPcdPattern.match(self.__CurrentLine()[self.CurrentOffsetWithinLine:]))
if IsRegionPcd:
- RegionObj.PcdOffset = self.__GetNextPcdName()
+ RegionObj.PcdOffset = self.__GetNextPcdSettings()
self.Profile.PcdDict[RegionObj.PcdOffset] = "0x%08X" % (RegionObj.Offset + long(Fd.BaseAddress, 0))
+ self.SetPcdLocalation(RegionObj.PcdOffset)
self.__PcdDict['%s.%s' % (RegionObj.PcdOffset[1], RegionObj.PcdOffset[0])] = "0x%x" % RegionObj.Offset
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[RegionObj.PcdOffset] = FileLineTuple
if self.__IsToken( "|"):
- RegionObj.PcdSize = self.__GetNextPcdName()
+ RegionObj.PcdSize = self.__GetNextPcdSettings()
self.Profile.PcdDict[RegionObj.PcdSize] = "0x%08X" % RegionObj.Size
+ self.SetPcdLocalation(RegionObj.PcdSize)
self.__PcdDict['%s.%s' % (RegionObj.PcdSize[1], RegionObj.PcdSize[0])] = "0x%x" % RegionObj.Size
FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)
self.Profile.PcdFileLineDict[RegionObj.PcdSize] = FileLineTuple
@@ -1881,7 +1938,7 @@ class FdfParser:
if not self.__GetNextWord():
return True
- elif self.__Token == "FV":
+ elif self.__Token == BINARY_FILE_TYPE_FV:
self.__UndoToken()
self.__GetRegionFvType( RegionObj)
@@ -1925,8 +1982,8 @@ class FdfParser:
#
def __GetRegionFvType(self, RegionObj):
- if not self.__IsKeyword( "FV"):
- raise Warning("expected Keyword 'FV'", self.FileName, self.CurrentLineNumber)
+ if not self.__IsKeyword( BINARY_FILE_TYPE_FV):
+ raise Warning("expected Keyword BINARY_FILE_TYPE_FV", self.FileName, self.CurrentLineNumber)
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
@@ -1934,10 +1991,10 @@ class FdfParser:
if not self.__GetNextToken():
raise Warning("expected FV name", self.FileName, self.CurrentLineNumber)
- RegionObj.RegionType = "FV"
+ RegionObj.RegionType = BINARY_FILE_TYPE_FV
RegionObj.RegionDataList.append((self.__Token).upper())
- while self.__IsKeyword( "FV"):
+ while self.__IsKeyword( BINARY_FILE_TYPE_FV):
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
@@ -2147,9 +2204,9 @@ class FdfParser:
while True:
self.__GetSetStatements(FvObj)
- if not (self.__GetBlockStatement(FvObj) or self.__GetFvBaseAddress(FvObj) or
- self.__GetFvForceRebase(FvObj) or self.__GetFvAlignment(FvObj) or
- self.__GetFvAttributes(FvObj) or self.__GetFvNameGuid(FvObj) or
+ if not (self.__GetBlockStatement(FvObj) or self.__GetFvBaseAddress(FvObj) or
+ self.__GetFvForceRebase(FvObj) or self.__GetFvAlignment(FvObj) or
+ self.__GetFvAttributes(FvObj) or self.__GetFvNameGuid(FvObj) or
self.__GetFvExtEntryStatement(FvObj) or self.__GetFvNameString(FvObj)):
break
@@ -2194,7 +2251,7 @@ class FdfParser:
raise Warning("Unknown alignment value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
Obj.FvAlignment = self.__Token
return True
-
+
## __GetFvBaseAddress() method
#
# Get BaseAddress for FV
@@ -2218,8 +2275,8 @@ class FdfParser:
if not BaseAddrValuePattern.match(self.__Token.upper()):
raise Warning("Unknown FV base address value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
Obj.FvBaseAddress = self.__Token
- return True
-
+ return True
+
## __GetFvForceRebase() method
#
# Get FvForceRebase for FV
@@ -2242,14 +2299,14 @@ class FdfParser:
if self.__Token.upper() not in ["TRUE", "FALSE", "0", "0X0", "0X00", "1", "0X1", "0X01"]:
raise Warning("Unknown FvForceRebase value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
-
+
if self.__Token.upper() in ["TRUE", "1", "0X1", "0X01"]:
Obj.FvForceRebase = True
elif self.__Token.upper() in ["FALSE", "0", "0X0", "0X00"]:
Obj.FvForceRebase = False
else:
Obj.FvForceRebase = None
-
+
return True
@@ -2284,7 +2341,7 @@ class FdfParser:
FvObj.FvAttributeDict[name] = self.__Token
return IsWordToken
-
+
## __GetFvNameGuid() method
#
# Get FV GUID for FV
@@ -2330,14 +2387,14 @@ class FdfParser:
if not self.__IsKeyword ("TYPE"):
raise Warning("expected 'TYPE'", self.FileName, self.CurrentLineNumber)
-
+
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
if not self.__GetNextHexNumber() and not self.__GetNextDecimalNumber():
raise Warning("expected Hex FV extension entry type value At Line ", self.FileName, self.CurrentLineNumber)
- FvObj.FvExtEntryTypeValue += [self.__Token]
+ FvObj.FvExtEntryTypeValue.append(self.__Token)
if not self.__IsToken( "{"):
raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)
@@ -2345,13 +2402,13 @@ class FdfParser:
if not self.__IsKeyword ("FILE") and not self.__IsKeyword ("DATA"):
raise Warning("expected 'FILE' or 'DATA'", self.FileName, self.CurrentLineNumber)
- FvObj.FvExtEntryType += [self.__Token]
+ FvObj.FvExtEntryType.append(self.__Token)
if self.__Token == 'DATA':
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
if not self.__IsToken( "{"):
raise Warning("expected '{'", self.FileName, self.CurrentLineNumber)
@@ -2379,17 +2436,17 @@ class FdfParser:
raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)
DataString = DataString.rstrip(",")
- FvObj.FvExtEntryData += [DataString]
+ FvObj.FvExtEntryData.append(DataString)
if self.__Token == 'FILE':
-
+
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
-
+
if not self.__GetNextToken():
raise Warning("expected FV Extension Entry file path At Line ", self.FileName, self.CurrentLineNumber)
-
- FvObj.FvExtEntryData += [self.__Token]
+
+ FvObj.FvExtEntryData.append(self.__Token)
if not self.__IsToken( "}"):
raise Warning("expected '}'", self.FileName, self.CurrentLineNumber)
@@ -2535,7 +2592,7 @@ class FdfParser:
if self.__GetStringData():
FfsInfObj.Version = self.__Token
- if self.__IsKeyword( "UI"):
+ if self.__IsKeyword( BINARY_FILE_TYPE_UI):
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
if not self.__GetNextToken():
@@ -2551,7 +2608,7 @@ class FdfParser:
raise Warning("expected ARCH name", self.FileName, self.CurrentLineNumber)
FfsInfObj.UseArch = self.__Token
-
+
if self.__GetNextToken():
p = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\))')
if p.match(self.__Token) and p.match(self.__Token).span()[1] == len(self.__Token):
@@ -2592,7 +2649,7 @@ class FdfParser:
self.__UndoToken()
self.__UndoToken()
return False
-
+
FfsFileObj = FfsFileStatement.FileStatement()
FfsFileObj.FvFileType = self.__Token
@@ -2605,13 +2662,13 @@ class FdfParser:
if self.__Token == 'PCD':
if not self.__IsToken( "("):
raise Warning("expected '('", self.FileName, self.CurrentLineNumber)
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
if not self.__IsToken( ")"):
raise Warning("expected ')'", self.FileName, self.CurrentLineNumber)
self.__Token = 'PCD('+PcdPair[1]+'.'+PcdPair[0]+')'
-
+
FfsFileObj.NameGuid = self.__Token
-
+
self.__GetFilePart( FfsFileObj, MacroDict.copy())
if ForCapsule:
@@ -2633,7 +2690,7 @@ class FdfParser:
#
@staticmethod
def __FileCouldHaveRelocFlag (FileType):
- if FileType in ('SEC', 'PEI_CORE', 'PEIM', 'PEI_DXE_COMBO'):
+ if FileType in (SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, 'PEI_DXE_COMBO'):
return True
else:
return False
@@ -2648,7 +2705,7 @@ class FdfParser:
#
@staticmethod
def __SectionCouldHaveRelocFlag (SectionType):
- if SectionType in ('TE', 'PE32'):
+ if SectionType in (BINARY_FILE_TYPE_TE, BINARY_FILE_TYPE_PE32):
return True
else:
return False
@@ -2681,7 +2738,7 @@ class FdfParser:
if not self.__GetNextToken():
raise Warning("expected File name or section data", self.FileName, self.CurrentLineNumber)
- if self.__Token == "FV":
+ if self.__Token == BINARY_FILE_TYPE_FV:
if not self.__IsToken( "="):
raise Warning("expected '='", self.FileName, self.CurrentLineNumber)
if not self.__GetNextToken():
@@ -2726,7 +2783,7 @@ class FdfParser:
while True:
AlignValue = None
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
#For FFS, Auto is default option same to ""
@@ -2785,7 +2842,7 @@ class FdfParser:
FfsFileObj.CheckSum = True
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
#For FFS, Auto is default option same to ""
@@ -2857,7 +2914,7 @@ class FdfParser:
AlignValue = None
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
AlignValue = self.__Token
@@ -2887,8 +2944,8 @@ class FdfParser:
else:
VerSectionObj.FileName = self.__Token
Obj.SectionList.append(VerSectionObj)
-
- elif self.__IsKeyword( "UI"):
+
+ elif self.__IsKeyword( BINARY_FILE_TYPE_UI):
if AlignValue == 'Auto':
raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)
if not self.__IsToken( "="):
@@ -2972,10 +3029,10 @@ class FdfParser:
self.SetFileBufferPos(OldPos)
return False
- if self.__Token not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\
- "UI", "VERSION", "PEI_DEPEX", "SUBTYPE_GUID", "SMM_DEPEX"):
+ if self.__Token not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\
+ BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "SUBTYPE_GUID", BINARY_FILE_TYPE_SMM_DEPEX):
raise Warning("Unknown section type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
- if AlignValue == 'Auto'and (not self.__Token == 'PE32') and (not self.__Token == 'TE'):
+ if AlignValue == 'Auto'and (not self.__Token == BINARY_FILE_TYPE_PE32) and (not self.__Token == BINARY_FILE_TYPE_TE):
raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)
# DataSection
@@ -3147,7 +3204,7 @@ class FdfParser:
AlignValue = None
if self.__GetAlignment():
- if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
AlignValue = self.__Token
@@ -3341,7 +3398,7 @@ class FdfParser:
Value = self.__Token.strip()
else:
Value = self.__Token.strip()
- Obj.TokensDict[Name] = Value
+ Obj.TokensDict[Name] = Value
if not self.__GetNextToken():
return False
self.__UndoToken()
@@ -3393,7 +3450,7 @@ class FdfParser:
#
def __GetFvStatement(self, CapsuleObj, FMPCapsule = False):
- if not self.__IsKeyword("FV"):
+ if not self.__IsKeyword(BINARY_FILE_TYPE_FV):
return False
if not self.__IsToken("="):
@@ -3483,7 +3540,7 @@ class FdfParser:
if not self.__GetNextToken():
raise Warning("expected File name", self.FileName, self.CurrentLineNumber)
-
+
AnyFileName = self.__Token
self.__VerifyFile(AnyFileName)
@@ -3516,7 +3573,7 @@ class FdfParser:
else:
CapsuleObj.CapsuleDataList.append(CapsuleAnyFile)
return True
-
+
## __GetAfileStatement() method
#
# Get Afile for capsule
@@ -3536,14 +3593,14 @@ class FdfParser:
if not self.__GetNextToken():
raise Warning("expected Afile name", self.FileName, self.CurrentLineNumber)
-
+
AfileName = self.__Token
AfileBaseName = os.path.basename(AfileName)
-
- if os.path.splitext(AfileBaseName)[1] not in [".bin",".BIN",".Bin",".dat",".DAT",".Dat",".data",".DATA",".Data"]:
- raise Warning('invalid binary file type, should be one of "bin","BIN","Bin","dat","DAT","Dat","data","DATA","Data"', \
+
+ if os.path.splitext(AfileBaseName)[1] not in [".bin", ".BIN", ".Bin", ".dat", ".DAT", ".Dat", ".data", ".DATA", ".Data"]:
+ raise Warning('invalid binary file type, should be one of "bin",BINARY_FILE_TYPE_BIN,"Bin","dat","DAT","Dat","data","DATA","Data"', \
self.FileName, self.CurrentLineNumber)
-
+
if not os.path.isabs(AfileName):
AfileName = GenFdsGlobalVariable.ReplaceWorkspaceMacro(AfileName)
self.__VerifyFile(AfileName)
@@ -3587,7 +3644,7 @@ class FdfParser:
raise Warning("expected '.'", self.FileName, self.CurrentLineNumber)
Arch = self.__SkippedChars.rstrip(".")
- if Arch.upper() not in ARCH_LIST_FULL:
+ if Arch.upper() not in ARCH_SET_FULL:
raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)
ModuleType = self.__GetModuleType()
@@ -3633,12 +3690,12 @@ class FdfParser:
if not self.__GetNextWord():
raise Warning("expected Module type", self.FileName, self.CurrentLineNumber)
- if self.__Token.upper() not in ("SEC", "PEI_CORE", "PEIM", "DXE_CORE", \
- "DXE_DRIVER", "DXE_SAL_DRIVER", \
- "DXE_SMM_DRIVER", "DXE_RUNTIME_DRIVER", \
- "UEFI_DRIVER", "UEFI_APPLICATION", "USER_DEFINED", "DEFAULT", "BASE", \
- "SECURITY_CORE", "COMBINED_PEIM_DRIVER", "PIC_PEIM", "RELOCATABLE_PEIM", \
- "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION", "ACPITABLE", "SMM_CORE", "MM_STANDALONE", "MM_CORE_STANDALONE"):
+ if self.__Token.upper() not in (SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, SUP_MODULE_DXE_CORE, \
+ SUP_MODULE_DXE_DRIVER, SUP_MODULE_DXE_SAL_DRIVER, \
+ SUP_MODULE_DXE_SMM_DRIVER, SUP_MODULE_DXE_RUNTIME_DRIVER, \
+ SUP_MODULE_UEFI_DRIVER, SUP_MODULE_UEFI_APPLICATION, SUP_MODULE_USER_DEFINED, "DEFAULT", SUP_MODULE_BASE, \
+ EDK_COMPONENT_TYPE_SECURITY_CORE, EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER, EDK_COMPONENT_TYPE_PIC_PEIM, EDK_COMPONENT_TYPE_RELOCATABLE_PEIM, \
+ "PE32_PEIM", EDK_COMPONENT_TYPE_BS_DRIVER, EDK_COMPONENT_TYPE_RT_DRIVER, EDK_COMPONENT_TYPE_SAL_RT_DRIVER, EDK_COMPONENT_TYPE_APPLICATION, "ACPITABLE", SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE, SUP_MODULE_MM_CORE_STANDALONE):
raise Warning("Unknown Module type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
return self.__Token
@@ -3680,8 +3737,8 @@ class FdfParser:
raise Warning("expected FFS type", self.FileName, self.CurrentLineNumber)
Type = self.__Token.strip().upper()
- if Type not in ("RAW", "FREEFORM", "SEC", "PEI_CORE", "PEIM",\
- "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE", "SMM", "SMM_CORE", "MM_STANDALONE", "MM_CORE_STANDALONE"):
+ if Type not in ("RAW", "FREEFORM", SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM,\
+ "PEI_DXE_COMBO", "DRIVER", SUP_MODULE_DXE_CORE, EDK_COMPONENT_TYPE_APPLICATION, "FV_IMAGE", "SMM", SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE, SUP_MODULE_MM_CORE_STANDALONE):
raise Warning("Unknown FV type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
if not self.__IsToken("="):
@@ -3693,11 +3750,11 @@ class FdfParser:
if self.__Token == 'PCD':
if not self.__IsToken( "("):
raise Warning("expected '('", self.FileName, self.CurrentLineNumber)
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
if not self.__IsToken( ")"):
raise Warning("expected ')'", self.FileName, self.CurrentLineNumber)
self.__Token = 'PCD('+PcdPair[1]+'.'+PcdPair[0]+')'
-
+
NameGuid = self.__Token
KeepReloc = None
@@ -3737,7 +3794,7 @@ class FdfParser:
AlignValue = ""
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
#For FFS, Auto is default option same to ""
@@ -3774,8 +3831,8 @@ class FdfParser:
SectionName = self.__Token
- if SectionName not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\
- "UI", "PEI_DEPEX", "VERSION", "SUBTYPE_GUID", "SMM_DEPEX"):
+ if SectionName not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\
+ BINARY_FILE_TYPE_UI, BINARY_FILE_TYPE_PEI_DEPEX, "VERSION", "SUBTYPE_GUID", BINARY_FILE_TYPE_SMM_DEPEX):
raise Warning("Unknown leaf section name '%s'" % SectionName, self.FileName, self.CurrentLineNumber)
@@ -3787,10 +3844,10 @@ class FdfParser:
SectAlignment = ""
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
- if self.__Token == 'Auto' and (not SectionName == 'PE32') and (not SectionName == 'TE'):
+ if self.__Token == 'Auto' and (not SectionName == BINARY_FILE_TYPE_PE32) and (not SectionName == BINARY_FILE_TYPE_TE):
raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)
SectAlignment = self.__Token
@@ -3831,8 +3888,8 @@ class FdfParser:
return False
SectionName = self.__Token
- if SectionName not in ("COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\
- "UI", "VERSION", "PEI_DEPEX", "GUID", "SMM_DEPEX"):
+ if SectionName not in ("COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\
+ BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):
self.__UndoToken()
return False
@@ -3862,12 +3919,12 @@ class FdfParser:
FvImageSectionObj.FvName = None
else:
- if not self.__IsKeyword("FV"):
- raise Warning("expected 'FV'", self.FileName, self.CurrentLineNumber)
+ if not self.__IsKeyword(BINARY_FILE_TYPE_FV):
+ raise Warning("expected BINARY_FILE_TYPE_FV", self.FileName, self.CurrentLineNumber)
FvImageSectionObj.FvFileType = self.__Token
if self.__GetAlignment():
- if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
FvImageSectionObj.Alignment = self.__Token
@@ -3875,8 +3932,8 @@ class FdfParser:
if self.__IsToken('|'):
FvImageSectionObj.FvFileExtension = self.__GetFileExtension()
elif self.__GetNextToken():
- if self.__Token not in ("}", "COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\
- "UI", "VERSION", "PEI_DEPEX", "GUID", "SMM_DEPEX"):
+ if self.__Token not in ("}", "COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\
+ BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):
FvImageSectionObj.FvFileName = self.__Token
else:
self.__UndoToken()
@@ -3935,10 +3992,10 @@ class FdfParser:
EfiSectionObj.BuildNum = self.__Token
if self.__GetAlignment():
- if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K", "128K",
+ if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K", "64K", "128K",
"256K", "512K", "1M", "2M", "4M", "8M", "16M"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
- if self.__Token == 'Auto' and (not SectionName == 'PE32') and (not SectionName == 'TE'):
+ if self.__Token == 'Auto' and (not SectionName == BINARY_FILE_TYPE_PE32) and (not SectionName == BINARY_FILE_TYPE_TE):
raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)
EfiSectionObj.Alignment = self.__Token
@@ -3957,23 +4014,23 @@ class FdfParser:
if self.__IsToken('|'):
EfiSectionObj.FileExtension = self.__GetFileExtension()
elif self.__GetNextToken():
- if self.__Token not in ("}", "COMPAT16", "PE32", "PIC", "TE", "FV_IMAGE", "RAW", "DXE_DEPEX",\
- "UI", "VERSION", "PEI_DEPEX", "GUID", "SMM_DEPEX"):
-
+ if self.__Token not in ("}", "COMPAT16", BINARY_FILE_TYPE_PE32, BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_TE, "FV_IMAGE", "RAW", BINARY_FILE_TYPE_DXE_DEPEX,\
+ BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, BINARY_FILE_TYPE_GUID, BINARY_FILE_TYPE_SMM_DEPEX):
+
if self.__Token.startswith('PCD'):
self.__UndoToken()
self.__GetNextWord()
-
+
if self.__Token == 'PCD':
if not self.__IsToken( "("):
raise Warning("expected '('", self.FileName, self.CurrentLineNumber)
- PcdPair = self.__GetNextPcdName()
+ PcdPair = self.__GetNextPcdSettings()
if not self.__IsToken( ")"):
raise Warning("expected ')'", self.FileName, self.CurrentLineNumber)
self.__Token = 'PCD('+PcdPair[1]+'.'+PcdPair[0]+')'
-
- EfiSectionObj.FileName = self.__Token
-
+
+ EfiSectionObj.FileName = self.__Token
+
else:
self.__UndoToken()
else:
@@ -3992,7 +4049,7 @@ class FdfParser:
#
@staticmethod
def __RuleSectionCouldBeOptional(SectionType):
- if SectionType in ("DXE_DEPEX", "UI", "VERSION", "PEI_DEPEX", "RAW", "SMM_DEPEX"):
+ if SectionType in (BINARY_FILE_TYPE_DXE_DEPEX, BINARY_FILE_TYPE_UI, "VERSION", BINARY_FILE_TYPE_PEI_DEPEX, "RAW", BINARY_FILE_TYPE_SMM_DEPEX):
return True
else:
return False
@@ -4022,7 +4079,7 @@ class FdfParser:
#
@staticmethod
def __RuleSectionCouldHaveString(SectionType):
- if SectionType in ("UI", "VERSION"):
+ if SectionType in (BINARY_FILE_TYPE_UI, "VERSION"):
return True
else:
return False
@@ -4039,32 +4096,32 @@ class FdfParser:
if SectionType == "COMPAT16":
if FileType not in ("COMPAT16", "SEC_COMPAT16"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "PE32":
- if FileType not in ("PE32", "SEC_PE32"):
+ elif SectionType == BINARY_FILE_TYPE_PE32:
+ if FileType not in (BINARY_FILE_TYPE_PE32, "SEC_PE32"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "PIC":
- if FileType not in ("PIC", "PIC"):
+ elif SectionType == BINARY_FILE_TYPE_PIC:
+ if FileType not in (BINARY_FILE_TYPE_PIC, BINARY_FILE_TYPE_PIC):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "TE":
- if FileType not in ("TE", "SEC_TE"):
+ elif SectionType == BINARY_FILE_TYPE_TE:
+ if FileType not in (BINARY_FILE_TYPE_TE, "SEC_TE"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
elif SectionType == "RAW":
- if FileType not in ("BIN", "SEC_BIN", "RAW", "ASL", "ACPI"):
+ if FileType not in (BINARY_FILE_TYPE_BIN, "SEC_BIN", "RAW", "ASL", "ACPI"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "DXE_DEPEX" or SectionType == "SMM_DEPEX":
- if FileType not in ("DXE_DEPEX", "SEC_DXE_DEPEX", "SMM_DEPEX"):
+ elif SectionType == BINARY_FILE_TYPE_DXE_DEPEX or SectionType == BINARY_FILE_TYPE_SMM_DEPEX:
+ if FileType not in (BINARY_FILE_TYPE_DXE_DEPEX, "SEC_DXE_DEPEX", BINARY_FILE_TYPE_SMM_DEPEX):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "UI":
- if FileType not in ("UI", "SEC_UI"):
+ elif SectionType == BINARY_FILE_TYPE_UI:
+ if FileType not in (BINARY_FILE_TYPE_UI, "SEC_UI"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
elif SectionType == "VERSION":
if FileType not in ("VERSION", "SEC_VERSION"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "PEI_DEPEX":
- if FileType not in ("PEI_DEPEX", "SEC_PEI_DEPEX"):
+ elif SectionType == BINARY_FILE_TYPE_PEI_DEPEX:
+ if FileType not in (BINARY_FILE_TYPE_PEI_DEPEX, "SEC_PEI_DEPEX"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
- elif SectionType == "GUID":
- if FileType not in ("PE32", "SEC_GUID"):
+ elif SectionType == BINARY_FILE_TYPE_GUID:
+ if FileType not in (BINARY_FILE_TYPE_PE32, "SEC_GUID"):
raise Warning("Incorrect section file type '%s'" % FileType, self.FileName, self.CurrentLineNumber)
## __GetRuleEncapsulationSection() method
@@ -4360,7 +4417,7 @@ class FdfParser:
self.SectionParser(S)
self.__UndoToken()
return False
-
+
self.__UndoToken()
if not self.__IsToken("[OptionRom.", True):
raise Warning("Unknown Keyword '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
@@ -4379,7 +4436,7 @@ class FdfParser:
isFile = self.__GetOptRomFileStatement(OptRomObj)
if not isInf and not isFile:
break
-
+
return True
## __GetOptRomInfStatement() method
@@ -4420,9 +4477,9 @@ class FdfParser:
else:
self.Profile.InfDict['ArchTBD'].append(ffsInf.InfFileName)
-
+
self.__GetOptRomOverrides (ffsInf)
-
+
Obj.FfsList.append(ffsInf)
return True
@@ -4484,7 +4541,7 @@ class FdfParser:
EdkLogger.error("FdfParser", FORMAT_INVALID, File=self.FileName, Line=self.CurrentLineNumber)
Obj.OverrideAttribs = Overrides
-
+
## __GetOptRomFileStatement() method
#
# Get FILE statements
@@ -4501,7 +4558,7 @@ class FdfParser:
FfsFileObj = OptRomFileStatement.OptRomFileStatement()
- if not self.__IsKeyword("EFI") and not self.__IsKeyword("BIN"):
+ if not self.__IsKeyword("EFI") and not self.__IsKeyword(BINARY_FILE_TYPE_BIN):
raise Warning("expected Binary type (EFI/BIN)", self.FileName, self.CurrentLineNumber)
FfsFileObj.FileType = self.__Token
@@ -4516,7 +4573,7 @@ class FdfParser:
if FfsFileObj.FileType == 'EFI':
self.__GetOptRomOverrides(FfsFileObj)
-
+
Obj.FfsList.append(FfsFileObj)
return True
@@ -4558,7 +4615,7 @@ class FdfParser:
if hasattr(CapsuleDataObj, 'FvName') and CapsuleDataObj.FvName is not None and CapsuleDataObj.FvName.upper() not in RefFvList:
RefFvList.append (CapsuleDataObj.FvName.upper())
elif hasattr(CapsuleDataObj, 'FdName') and CapsuleDataObj.FdName is not None and CapsuleDataObj.FdName.upper() not in RefFdList:
- RefFdList.append (CapsuleDataObj.FdName.upper())
+ RefFdList.append (CapsuleDataObj.FdName.upper())
elif CapsuleDataObj.Ffs is not None:
if isinstance(CapsuleDataObj.Ffs, FfsFileStatement.FileStatement):
if CapsuleDataObj.Ffs.FvName is not None and CapsuleDataObj.Ffs.FvName.upper() not in RefFvList:
@@ -4582,7 +4639,7 @@ class FdfParser:
if FdName.upper() in self.Profile.FdDict:
FdObj = self.Profile.FdDict[FdName.upper()]
for elementRegion in FdObj.RegionList:
- if elementRegion.RegionType == 'FV':
+ if elementRegion.RegionType == BINARY_FILE_TYPE_FV:
for elementRegionData in elementRegion.RegionDataList:
if elementRegionData.endswith(".fv"):
continue
@@ -4653,7 +4710,7 @@ class FdfParser:
RefFvStack = []
RefFvStack.append(FvName)
FdAnalyzedList = []
-
+
Index = 0
while RefFvStack != [] and Index < MaxLength:
Index = Index + 1
@@ -4675,7 +4732,7 @@ class FdfParser:
FvInFdList = self.__GetFvInFd(RefFdName)
if FvInFdList != []:
for FvNameInFd in FvInFdList:
- LogStr += "FD %s contains FV %s\n" % (RefFdName,FvNameInFd)
+ LogStr += "FD %s contains FV %s\n" % (RefFdName, FvNameInFd)
if FvNameInFd not in RefFvStack:
RefFvStack.append(FvNameInFd)
@@ -4706,7 +4763,7 @@ class FdfParser:
RefCapStack.append(CapName)
FdAnalyzedList = []
FvAnalyzedList = []
-
+
Index = 0
while RefCapStack != [] and Index < MaxLength:
Index = Index + 1
@@ -4731,7 +4788,7 @@ class FdfParser:
CapInFdList = self.__GetCapInFd(RefFdName)
if CapInFdList != []:
for CapNameInFd in CapInFdList:
- LogStr += "FD %s contains Capsule %s\n" % (RefFdName,CapNameInFd)
+ LogStr += "FD %s contains Capsule %s\n" % (RefFdName, CapNameInFd)
if CapNameInFd not in RefCapStack:
RefCapStack.append(CapNameInFd)
@@ -4742,7 +4799,7 @@ class FdfParser:
FvInFdList = self.__GetFvInFd(RefFdName)
if FvInFdList != []:
for FvNameInFd in FvInFdList:
- LogStr += "FD %s contains FV %s\n" % (RefFdName,FvNameInFd)
+ LogStr += "FD %s contains FV %s\n" % (RefFdName, FvNameInFd)
if FvNameInFd not in RefFvList:
RefFvList.append(FvNameInFd)
@@ -4773,16 +4830,16 @@ if __name__ == "__main__":
import sys
try:
test_file = sys.argv[1]
- except IndexError, v:
- print "Usage: %s filename" % sys.argv[0]
+ except IndexError as v:
+ print("Usage: %s filename" % sys.argv[0])
sys.exit(1)
parser = FdfParser(test_file)
try:
parser.ParseFile()
parser.CycleReferenceCheck()
- except Warning, X:
- print str(X)
+ except Warning as X:
+ print(str(X))
else:
- print "Success!"
+ print("Success!")