]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/FdfParserLite.py
Sync basetools' source and binary files with r1707 of the basetools project.
[mirror_edk2.git] / BaseTools / Source / Python / Common / FdfParserLite.py
index 59006fa5c51a89ac4ff3493a645942d4e7f2c737..5099ed611c9f062aa2938673b8086d26fd7ffb4e 100644 (file)
@@ -1599,7 +1599,7 @@ class FdfParser(object):
         if not self.__GetNextWord():\r
             return True\r
         \r
-        if not self.__Token in ("SET", "FV", "FILE", "DATA"):\r
+        if not self.__Token in ("SET", "FV", "FILE", "DATA", "CAPSULE"):\r
             self.__UndoToken()\r
             RegionObj.PcdOffset = self.__GetNextPcdName()\r
             self.Profile.PcdDict[RegionObj.PcdOffset] = RegionObj.Offset + long(Fd.BaseAddress, 0)\r
@@ -1620,10 +1620,14 @@ class FdfParser(object):
             if not self.__GetNextWord():\r
                 return True\r
             \r
-        if self.__Token == "FV":\r
+        elif self.__Token == "FV":\r
             self.__UndoToken()\r
             self.__GetRegionFvType( RegionObj)\r
 \r
+        elif self.__Token == "CAPSULE":\r
+            self.__UndoToken()\r
+            self.__GetRegionCapType( RegionObj)\r
+\r
         elif self.__Token == "FILE":\r
             self.__UndoToken()\r
             self.__GetRegionFileType( RegionObj)\r
@@ -1664,7 +1668,38 @@ class FdfParser(object):
                 raise Warning("expected FV name At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
             RegionObj.RegionDataList.append(self.__Token)\r
-        \r
+\r
+    ## __GetRegionCapType() method\r
+    #\r
+    #   Get region capsule data for region\r
+    #\r
+    #   @param  self        The object pointer\r
+    #   @param  RegionObj   for whom region data is got\r
+    #\r
+    def __GetRegionCapType(self, RegionObj):\r
+\r
+        if not self.__IsKeyword("CAPSULE"):\r
+            raise Warning("expected Keyword 'CAPSULE' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+        if not self.__IsToken("="):\r
+            raise Warning("expected '=' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+        if not self.__GetNextToken():\r
+            raise Warning("expected CAPSULE name at line", self.FileName, self.CurrentLineNumber)\r
+\r
+        RegionObj.RegionType = "CAPSULE"\r
+        RegionObj.RegionDataList.append(self.__Token)\r
+\r
+        while self.__IsKeyword("CAPSULE"):\r
+\r
+            if not self.__IsToken("="):\r
+                raise Warning("expected '=' at line", self.FileName, self.CurrentLineNumber)\r
+\r
+            if not self.__GetNextToken():\r
+                raise Warning("expected CAPSULE name at line", self.FileName, self.CurrentLineNumber)\r
+\r
+            RegionObj.RegionDataList.append(self.__Token)\r
+\r
     ## __GetRegionFileType() method\r
     #\r
     #   Get region file data for region\r
@@ -2713,7 +2748,7 @@ class FdfParser(object):
         \r
         Arch = self.__SkippedChars.rstrip(".")\r
         if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "ARM", "COMMON"):\r
-            raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
         \r
         ModuleType = self.__GetModuleType()\r
         \r
@@ -2763,7 +2798,7 @@ class FdfParser(object):
                              "DXE_SMM_DRIVER", "DXE_RUNTIME_DRIVER", \\r
                              "UEFI_DRIVER", "UEFI_APPLICATION", "USER_DEFINED", "DEFAULT", "BASE", \\r
                              "SECURITY_CORE", "COMBINED_PEIM_DRIVER", "PIC_PEIM", "RELOCATABLE_PEIM", \\r
-                             "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION"):\r
+                             "PE32_PEIM", "BS_DRIVER", "RT_DRIVER", "SAL_RT_DRIVER", "APPLICATION", "ACPITABLE", "SMM_DRIVER", "SMM_CORE"):\r
             raise Warning("Unknown Module type At line ", self.FileName, self.CurrentLineNumber)\r
         return self.__Token\r
     \r
@@ -2803,11 +2838,11 @@ class FdfParser(object):
             raise Warning("expected FILE At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         if not self.__GetNextWord():\r
-            raise Warning("expected FV type At Line ", self.FileName, self.CurrentLineNumber)\r
+            raise Warning("expected FFS type At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         Type = self.__Token.strip().upper()\r
         if Type not in ("RAW", "FREEFORM", "SEC", "PEI_CORE", "PEIM",\\r
-                             "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE"):\r
+                             "PEI_DXE_COMBO", "DRIVER", "DXE_CORE", "APPLICATION", "FV_IMAGE", "SMM_DXE_COMBO", "SMM", "SMM_CORE"):\r
             raise Warning("Unknown FV type At line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__IsToken("="):\r