]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
Sync BaseTool trunk (version r2670) into EDKII BaseTools.
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / WorkspaceDatabase.py
index 3444e4f053e7878943698ab1b53008eb98d1bfff..6ebb7ee87d5e4ed3d264a1da13de76323b341f25 100644 (file)
@@ -37,6 +37,7 @@ from BuildClassObject import *
 from WorkspaceCommon import GetDeclaredPcd\r
 from Common.Misc import AnalyzeDscPcd\r
 import re\r
+from Common.Parsing import IsValidWord\r
 \r
 ## Platform build information from DSC file\r
 #\r
@@ -893,13 +894,23 @@ class DscBuildData(PlatformBuildClassObject):
             VariableName, VariableGuid, VariableOffset, DefaultValue = self._ValidatePcd(PcdCName, TokenSpaceGuid, Setting, Type, Dummy4)\r
             \r
             ExceedMax = False\r
+            FormatCorrect = True\r
             if VariableOffset.isdigit():\r
                 if int(VariableOffset,10) > 0xFFFF:\r
                     ExceedMax = True\r
             elif re.match(r'[\t\s]*0[xX][a-fA-F0-9]+$',VariableOffset):\r
                 if int(VariableOffset,16) > 0xFFFF:\r
                     ExceedMax = True\r
+            # For Offset written in "A.B"\r
+            elif VariableOffset.find('.') > -1:\r
+                VariableOffsetList = VariableOffset.split(".")\r
+                if not (len(VariableOffsetList) == 2\r
+                        and IsValidWord(VariableOffsetList[0])\r
+                        and IsValidWord(VariableOffsetList[1])):\r
+                    FormatCorrect = False\r
             else:\r
+                FormatCorrect = False\r
+            if not FormatCorrect:\r
                 EdkLogger.error('Build', FORMAT_INVALID, "Invalid syntax or format of the variable offset value is incorrect for %s." % ".".join((TokenSpaceGuid,PcdCName)))\r
             \r
             if ExceedMax:\r