]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/FdfParserLite.py
There is a limitation on WINDOWS OS for the length of entire file path can’t be large...
[mirror_edk2.git] / BaseTools / Source / Python / Common / FdfParserLite.py
index eb7b0d75146665ef80814940af79e1bb13b7f16a..54a60a7e8f81c1655c434b29f776edb88ad74b77 100644 (file)
@@ -1,9 +1,9 @@
 ## @file\r
 # parse FDF file\r
 #\r
-#  Copyright (c) 2007 - 2010, Intel Corporation\r
+#  Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
 #\r
-#  All rights reserved. This program and the accompanying materials\r
+#  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
 #  which accompanies this distribution.  The full text of the license may be found at\r
 #  http://opensource.org/licenses/bsd-license.php\r
 # Import Modules\r
 #\r
 import re\r
-import os\r
+import Common.LongFilePathOs as os\r
 \r
 import CommonDataClass.FdfClass\r
+from Common.LongFilePathSupport import OpenLongFilePath as open\r
 \r
 ##define T_CHAR_SPACE                ' '\r
 ##define T_CHAR_NULL                 '\0'\r
@@ -1760,8 +1761,8 @@ class FdfParser(object):
         if not self.__GetNextHexNumber():\r
             raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
-        if len(self.__Token) > 4:\r
-            raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
+        if len(self.__Token) > 18:\r
+            raise Warning("Hex string can't be converted to a valid UINT64 value", self.FileName, self.CurrentLineNumber)\r
         \r
         DataString = self.__Token\r
         DataString += ","\r
@@ -1792,8 +1793,8 @@ class FdfParser(object):
             if not self.__GetNextHexNumber():\r
                 raise Warning("expected Hex byte At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
-            if len(self.__Token) > 4:\r
-                raise Warning("Hex byte(must be 2 digits) too long At Line ", self.FileName, self.CurrentLineNumber)\r
+            if len(self.__Token) > 18:\r
+                raise Warning("Hex string can't be converted to a valid UINT64 value", self.FileName, self.CurrentLineNumber)\r
         \r
             DataString = self.__Token\r
             DataString += ","\r
@@ -2769,7 +2770,7 @@ class FdfParser(object):
             raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
         \r
         Arch = self.__SkippedChars.rstrip(".")\r
-        if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "ARM", "COMMON"):\r
+        if Arch.upper() not in ("IA32", "X64", "IPF", "EBC", "ARM", "AARCH64", "COMMON"):\r
             raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)\r
         \r
         ModuleType = self.__GetModuleType()\r
@@ -3356,7 +3357,7 @@ class FdfParser(object):
             raise Warning("expected '.' At Line ", self.FileName, self.CurrentLineNumber)\r
 \r
         Arch = self.__SkippedChars.rstrip(".").upper()\r
-        if Arch not in ("IA32", "X64", "IPF", "ARM"):\r
+        if Arch not in ("IA32", "X64", "IPF", "ARM", "AARCH64"):\r
             raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
 \r
         if not self.__GetNextWord():\r
@@ -3370,7 +3371,7 @@ class FdfParser(object):
         if self.__IsToken(","):\r
             if not self.__GetNextWord():\r
                 raise Warning("expected Arch list At Line ", self.FileName, self.CurrentLineNumber)\r
-            if self.__Token.upper() not in ("IA32", "X64", "IPF", "ARM"):\r
+            if self.__Token.upper() not in ("IA32", "X64", "IPF", "ARM", "AARCH64"):\r
                 raise Warning("Unknown Arch At line ", self.FileName, self.CurrentLineNumber)\r
             VtfObj.ArchList = self.__Token.upper()\r
 \r
@@ -3647,7 +3648,14 @@ class FdfParser(object):
             return CycleRefExists\r
         \r
 if __name__ == "__main__":\r
-    parser = FdfParser("..\LakeportX64Pkg.fdf")\r
+    import sys\r
+    try:\r
+        test_file = sys.argv[1]\r
+    except IndexError, v:\r
+        print "Usage: %s filename" % sys.argv[0]\r
+        sys.exit(1)\r
+\r
+    parser = FdfParser(test_file)\r
     try:\r
         parser.ParseFile()\r
         parser.CycleReferenceCheck()\r