]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/FdfParser.py
Sync BaseTools Branch (version r2271) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / FdfParser.py
index 733935afe9bdf3fb1d17e3c806dbfe2b6d79131b..5cdbe8888964ef2e42922917c8fbbd9bae0e6e98 100644 (file)
@@ -1926,6 +1926,8 @@ class FdfParser:
             pass\r
 \r
         self.__GetSetStatements(FvObj)\r
+        \r
+        self.__GetFvBaseAddress(FvObj)\r
 \r
         self.__GetFvAlignment(FvObj)\r
 \r
@@ -1979,6 +1981,34 @@ class FdfParser:
             raise Warning("Unknown alignment value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         Obj.FvAlignment = self.__Token\r
         return True\r
+    \r
+    ## __GetFvBaseAddress() method\r
+    #\r
+    #   Get BaseAddress for FV\r
+    #\r
+    #   @param  self        The object pointer\r
+    #   @param  Obj         for whom FvBaseAddress is got\r
+    #   @retval True        Successfully find a FvBaseAddress statement\r
+    #   @retval False       Not able to find a FvBaseAddress statement\r
+    #\r
+    def __GetFvBaseAddress(self, Obj):\r
+\r
+        if not self.__IsKeyword("FvBaseAddress"):\r
+            return False\r
+\r
+        if not self.__IsToken( "="):\r
+            raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+\r
+        if not self.__GetNextToken():\r
+            raise Warning("expected FV base address value", self.FileName, self.CurrentLineNumber)\r
+\r
+        IsValidBaseAddrValue = re.compile('^0[x|X][0-9a-fA-F]+')\r
+\r
+        if not IsValidBaseAddrValue.match(self.__Token.upper()):\r
+            raise Warning("Unknown alignment value '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
+        Obj.FvBaseAddress = self.__Token\r
+        return True    \r
+    \r
 \r
     ## __GetFvAttributes() method\r
     #\r