X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FGenFds%2FFdfParser.py;h=e2e6df71673a6129f84e37b97c535912d203d09e;hp=74785e0a93fea036809820272a9763467211d8c2;hb=543f5ac30facfbb40eafb2b4908649a427784080;hpb=ccaa7754a29728df0a7485932aab4909f6be116a diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index 74785e0a93..e2e6df7167 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -83,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 @@ -173,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) @@ -191,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: @@ -226,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 = {} @@ -339,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 # @@ -459,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) @@ -599,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(): @@ -664,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): @@ -707,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. @@ -778,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))) @@ -787,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) @@ -798,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 @@ -808,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: @@ -819,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: @@ -891,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], @@ -905,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, {}) @@ -923,12 +924,12 @@ class FdfParser: else: return ValueExpression(Expression, MacroPcdDict)() 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 as Excpt: @@ -947,7 +948,7 @@ class FdfParser: 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 @@ -1240,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 "" @@ -1432,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('['): @@ -1492,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) @@ -1567,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 @@ -1578,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 @@ -1595,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) @@ -1612,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 @@ -1666,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) @@ -1694,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) @@ -1777,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) @@ -1788,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 @@ -1835,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 @@ -1864,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 @@ -2151,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 @@ -2198,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 @@ -2222,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 @@ -2246,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 @@ -2288,7 +2341,7 @@ class FdfParser: FvObj.FvAttributeDict[name] = self.__Token return IsWordToken - + ## __GetFvNameGuid() method # # Get FV GUID for FV @@ -2334,7 +2387,7 @@ 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) @@ -2355,7 +2408,7 @@ class FdfParser: if not self.__IsToken( "="): raise Warning("expected '='", self.FileName, self.CurrentLineNumber) - + if not self.__IsToken( "{"): raise Warning("expected '{'", self.FileName, self.CurrentLineNumber) @@ -2386,13 +2439,13 @@ class FdfParser: 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.append(self.__Token) if not self.__IsToken( "}"): @@ -2555,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): @@ -2596,7 +2649,7 @@ class FdfParser: self.__UndoToken() self.__UndoToken() return False - + FfsFileObj = FfsFileStatement.FileStatement() FfsFileObj.FvFileType = self.__Token @@ -2609,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: @@ -2891,7 +2944,7 @@ class FdfParser: else: VerSectionObj.FileName = self.__Token Obj.SectionList.append(VerSectionObj) - + 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) @@ -3345,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() @@ -3487,7 +3540,7 @@ class FdfParser: if not self.__GetNextToken(): raise Warning("expected File name", self.FileName, self.CurrentLineNumber) - + AnyFileName = self.__Token self.__VerifyFile(AnyFileName) @@ -3520,7 +3573,7 @@ class FdfParser: else: CapsuleObj.CapsuleDataList.append(CapsuleAnyFile) return True - + ## __GetAfileStatement() method # # Get Afile for capsule @@ -3540,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",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) @@ -3697,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 @@ -3963,21 +4016,21 @@ class FdfParser: elif self.__GetNextToken(): 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: @@ -4364,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) @@ -4383,7 +4436,7 @@ class FdfParser: isFile = self.__GetOptRomFileStatement(OptRomObj) if not isInf and not isFile: break - + return True ## __GetOptRomInfStatement() method @@ -4424,9 +4477,9 @@ class FdfParser: else: self.Profile.InfDict['ArchTBD'].append(ffsInf.InfFileName) - + self.__GetOptRomOverrides (ffsInf) - + Obj.FfsList.append(ffsInf) return True @@ -4488,7 +4541,7 @@ class FdfParser: EdkLogger.error("FdfParser", FORMAT_INVALID, File=self.FileName, Line=self.CurrentLineNumber) Obj.OverrideAttribs = Overrides - + ## __GetOptRomFileStatement() method # # Get FILE statements @@ -4520,7 +4573,7 @@ class FdfParser: if FfsFileObj.FileType == 'EFI': self.__GetOptRomOverrides(FfsFileObj) - + Obj.FfsList.append(FfsFileObj) return True @@ -4562,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: @@ -4657,7 +4710,7 @@ class FdfParser: RefFvStack = [] RefFvStack.append(FvName) FdAnalyzedList = [] - + Index = 0 while RefFvStack != [] and Index < MaxLength: Index = Index + 1 @@ -4710,7 +4763,7 @@ class FdfParser: RefCapStack.append(CapName) FdAnalyzedList = [] FvAnalyzedList = [] - + Index = 0 while RefCapStack != [] and Index < MaxLength: Index = Index + 1