]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Sync BaseTool trunk (version r2601) into EDKII BaseTools.
authorLiming Gao <liming.gao@intel.com>
Tue, 24 Sep 2013 07:13:44 +0000 (07:13 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 24 Sep 2013 07:13:44 +0000 (07:13 +0000)
Signed-off-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14710 6f19259b-4bc3-4df7-8a09-765794883524

33 files changed:
BaseTools/Bin/Win32/BPDG.exe
BaseTools/Bin/Win32/BootSectImage.exe
BaseTools/Bin/Win32/EfiLdrImage.exe
BaseTools/Bin/Win32/EfiRom.exe
BaseTools/Bin/Win32/GenBootSector.exe
BaseTools/Bin/Win32/GenCrc32.exe
BaseTools/Bin/Win32/GenDepex.exe
BaseTools/Bin/Win32/GenFds.exe
BaseTools/Bin/Win32/GenFfs.exe
BaseTools/Bin/Win32/GenFv.exe
BaseTools/Bin/Win32/GenFw.exe
BaseTools/Bin/Win32/GenPage.exe
BaseTools/Bin/Win32/GenPatchPcdTable.exe
BaseTools/Bin/Win32/GenSec.exe
BaseTools/Bin/Win32/GenVtf.exe
BaseTools/Bin/Win32/LzmaCompress.exe
BaseTools/Bin/Win32/PatchPcdValue.exe
BaseTools/Bin/Win32/Split.exe
BaseTools/Bin/Win32/TargetTool.exe
BaseTools/Bin/Win32/TianoCompress.exe
BaseTools/Bin/Win32/Trim.exe
BaseTools/Bin/Win32/UPT.exe
BaseTools/Bin/Win32/VfrCompile.exe
BaseTools/Bin/Win32/VolInfo.exe
BaseTools/Bin/Win32/build.exe
BaseTools/Source/C/Include/Common/BuildVersion.h
BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/Source/C/VfrCompile/VfrSyntax.g
BaseTools/Source/Python/Common/BuildVersion.py
BaseTools/Source/Python/UPT/BuildVersion.py
BaseTools/Source/Python/Workspace/MetaFileParser.py

index 09137b60370a09924c893c2098ba959c9d29d950..1a684bb8739689fc7eb5f3ad685eb7ba7e6f201b 100644 (file)
Binary files a/BaseTools/Bin/Win32/BPDG.exe and b/BaseTools/Bin/Win32/BPDG.exe differ
index a37e779ae73cc20303e782dc7b0c43924c087d35..59b0b845850033cb9443bab8b076abc31018c344 100755 (executable)
Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ
index 29db3e2f416cb4f266c074542de94e680ef70973..c732a73306f16ff8964f28efb185d40c6a76b514 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index 6aefa0d41ade149d902fb2ceb875e081a240c67a..2e761cc08de9b7be0cb4c1c82bf4f55df754419c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ
index 8bb35ac8357f17b7ec8459a8515828d98240ac41..84d67f9b83e1ac96aaf8ac6690f9eae99135b433 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ
index a6009cd72aa8828721689c21fc8ccf805e7d1c84..cdefa75895e3a95c7216d70c12d458116098b5ab 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ
index 3d05e761366ddcdccbe6876777d5c4195b0641ea..2d7e20f60f8fc3b9c908ad03af1e0c9771c31b40 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenDepex.exe and b/BaseTools/Bin/Win32/GenDepex.exe differ
index 9bc45a846a2391ebcf0fd07e238679d147b9d9fd..6d2a1aa55d966eef22babe1e13bd6942020effb7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFds.exe and b/BaseTools/Bin/Win32/GenFds.exe differ
index 632f7f3bb374120795ee56673d84125903e76ec1..b419b0d172fcfffaeb79414cd694c7e66f5ab8c7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ
index b87331335e35332bfe3ae8cc65f97807af59346e..c6e3ad656cd7fb11a3b4d35c1311206db8d5c196 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ
index d47991f919b9be4ecfb99c81e931158bd9a88838..8e19c1724fe5a3f7a1cec8947f709bd6f95747ad 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ
index 50806487c9e350cfba36cf5c618ddbbc2453af28..a2a95bd30fc87660c1e0883a125a60875fce5510 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ
index a3ce036d43621c4f90577eac3af42d6782892d71..7f7aa5ab6fb38022f137fd8a66e698bcb5aa584c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPatchPcdTable.exe and b/BaseTools/Bin/Win32/GenPatchPcdTable.exe differ
index a79833599d17e6580ed878527605f190e222ef6d..2cb0c3b81390e24e3689256285a22cd214eba7cf 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ
index a248c31f7a69abfb9cc44da35d61eb9092091fd3..7e38d68bac5e05934c8cc828a4fdc3a829a51204 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ
index 456d67326838303c92d85e1169b3b005408bffa2..9838c0e9b118d98cd067e3cfccf44559bbd44199 100755 (executable)
Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ
index 48b24e22cb48627c6a282933954441d715f65dad..142d59a16cf20d774ac566b3f4750fbaa3460896 100755 (executable)
Binary files a/BaseTools/Bin/Win32/PatchPcdValue.exe and b/BaseTools/Bin/Win32/PatchPcdValue.exe differ
index 00000ac73932017895eed3ef1307c17d2c1ac978..254590bbe305871f4f7c939ea9f1ef665b995899 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ
index bdaaf07260a167807691403c26d342b10ee0fde7..c8c23d5a37047ac87d9a4a67f74c91f791fa0180 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TargetTool.exe and b/BaseTools/Bin/Win32/TargetTool.exe differ
index a65ba046b571321ef050708837ab239dd496123a..cdbe97f85e84cebbe701af8e8f867f6762d1854c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ
index 44edbab30d579b4f57de779a4b43f3fa6c53e632..056581b00bb8a4a66cd5024b6d1eec1811c33744 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Trim.exe and b/BaseTools/Bin/Win32/Trim.exe differ
index a7060c7447223b16374d46a3e9a1d653ba527c88..3101afd618df528582f4f6a99d2566fad86b67ec 100644 (file)
Binary files a/BaseTools/Bin/Win32/UPT.exe and b/BaseTools/Bin/Win32/UPT.exe differ
index 20e1b43c93dfdcbb652b0648b46240ec5bdf82e7..1c1ca78f7ca1f993f631373944d9c47c298322f1 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ
index 593784de3a78ce43cbb11ef1b9bb89a625b9f9e3..c042d9222b59212214be8a2114bd1fe4df4a5e94 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ
index 2b74c9948f6fe9127c6490c6aa4995c56b7fdb5a..3c03283bdd79852ff1ff50c75dfb7ab9eef233b4 100755 (executable)
Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ
index 764bebfa933a494bda06034717520a3d7cbbaef8..f524cefc9b02bed07cfa33e0599e1037baf9a845 100644 (file)
@@ -14,4 +14,4 @@
 \r
 **/\r
 \r
 \r
 **/\r
 \r
-#define __BUILD_VERSION ""\r
+#define __BUILD_VERSION "Build 2601"\r
index 3cd22d134739908270d5603c393435554a55ab39..ea5f211e9b326d34a05ec8c81cbda7a721b69453 100644 (file)
@@ -3,7 +3,7 @@
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
   internal application and drivers as well as all add-in card option-ROM drivers\r
 \r
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
   internal application and drivers as well as all add-in card option-ROM drivers\r
 \r
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
 \r
   This program and the accompanying materials are licensed and made available\r
   under the terms and conditions of the BSD License which accompanies this\r
 \r
   This program and the accompanying materials are licensed and made available\r
   under the terms and conditions of the BSD License which accompanies this\r
@@ -691,6 +691,7 @@ typedef union {
 #define EFI_IFR_SECURITY_OP            0x60\r
 #define EFI_IFR_MODAL_TAG_OP           0x61\r
 #define EFI_IFR_REFRESH_ID_OP          0x62\r
 #define EFI_IFR_SECURITY_OP            0x60\r
 #define EFI_IFR_MODAL_TAG_OP           0x61\r
 #define EFI_IFR_REFRESH_ID_OP          0x62\r
+#define EFI_IFR_WARNING_IF_OP          0x63\r
 \r
 \r
 typedef struct _EFI_IFR_OP_HEADER {\r
 \r
 \r
 typedef struct _EFI_IFR_OP_HEADER {\r
@@ -1015,6 +1016,12 @@ typedef struct _EFI_IFR_NO_SUBMIT_IF {
   EFI_STRING_ID            Error;\r
 } EFI_IFR_NO_SUBMIT_IF;\r
 \r
   EFI_STRING_ID            Error;\r
 } EFI_IFR_NO_SUBMIT_IF;\r
 \r
+typedef struct _EFI_IFR_WARNING_IF {\r
+  EFI_IFR_OP_HEADER        Header;\r
+  EFI_STRING_ID            Warning;\r
+  UINT8                    TimeOut;\r
+} EFI_IFR_WARNING_IF;\r
+\r
 typedef struct _EFI_IFR_REFRESH {\r
   EFI_IFR_OP_HEADER        Header;\r
   UINT8                    RefreshInterval;\r
 typedef struct _EFI_IFR_REFRESH {\r
   EFI_IFR_OP_HEADER        Header;\r
   UINT8                    RefreshInterval;\r
index 7cadf0f42b892654f10ea291add71a999b288b04..363ca82a241bfb46866f7f24d562f258b882529b 100644 (file)
@@ -1673,6 +1673,7 @@ static struct {
   { sizeof (EFI_IFR_SECURITY), 0 },            // EFI_IFR_SECURITY_OP - 0x60\r
   { sizeof (EFI_IFR_MODAL_TAG), 0},            // EFI_IFR_MODAL_TAG_OP - 0x61\r
   { sizeof (EFI_IFR_REFRESH_ID), 0},           // EFI_IFR_REFRESH_ID_OP - 0x62\r
   { sizeof (EFI_IFR_SECURITY), 0 },            // EFI_IFR_SECURITY_OP - 0x60\r
   { sizeof (EFI_IFR_MODAL_TAG), 0},            // EFI_IFR_MODAL_TAG_OP - 0x61\r
   { sizeof (EFI_IFR_REFRESH_ID), 0},           // EFI_IFR_REFRESH_ID_OP - 0x62\r
+  { sizeof (EFI_IFR_WARNING_IF), 1},           // EFI_IFR_WARNING_IF_OP - 0x63\r
 };\r
 \r
 #ifdef CIFROBJ_DEUBG\r
 };\r
 \r
 #ifdef CIFROBJ_DEUBG\r
@@ -1695,7 +1696,7 @@ static struct {
   "EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2",          "EFI_IFR_CONDITIONAL",   "EFI_IFR_QUESTION_REF3",   "EFI_IFR_ZERO",          "EFI_IFR_ONE",\r
   "EFI_IFR_ONES",       "EFI_IFR_UNDEFINED",            "EFI_IFR_LENGTH",        "EFI_IFR_DUP",             "EFI_IFR_THIS",          "EFI_IFR_SPAN",\r
   "EFI_IFR_VALUE",      "EFI_IFR_DEFAULT",              "EFI_IFR_DEFAULTSTORE",  "EFI_IFR_FORM_MAP",        "EFI_IFR_CATENATE",      "EFI_IFR_GUID",\r
   "EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2",          "EFI_IFR_CONDITIONAL",   "EFI_IFR_QUESTION_REF3",   "EFI_IFR_ZERO",          "EFI_IFR_ONE",\r
   "EFI_IFR_ONES",       "EFI_IFR_UNDEFINED",            "EFI_IFR_LENGTH",        "EFI_IFR_DUP",             "EFI_IFR_THIS",          "EFI_IFR_SPAN",\r
   "EFI_IFR_VALUE",      "EFI_IFR_DEFAULT",              "EFI_IFR_DEFAULTSTORE",  "EFI_IFR_FORM_MAP",        "EFI_IFR_CATENATE",      "EFI_IFR_GUID",\r
-  "EFI_IFR_SECURITY",   "EFI_IFR_MODAL_TAG",            "EFI_IFR_REFRESH_ID",\r
+  "EFI_IFR_SECURITY",   "EFI_IFR_MODAL_TAG",            "EFI_IFR_REFRESH_ID",    "EFI_IFR_WARNING_IF",\r
 };\r
 \r
 VOID\r
 };\r
 \r
 VOID\r
index 614471060d7b16a1169bc5d8bf0c94a2617099a0..25280def9bbc779315cf320edf93e09bdaee11d2 100644 (file)
@@ -1612,6 +1612,26 @@ public:
   }\r
 };\r
 \r
   }\r
 };\r
 \r
+class CIfrWarningIf : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_WARNING_IF *mWarningIf;\r
+\r
+public:\r
+  CIfrWarningIf () : CIfrObj (EFI_IFR_WARNING_IF_OP, (CHAR8 **)&mWarningIf),\r
+                        CIfrOpHeader (EFI_IFR_WARNING_IF_OP, &mWarningIf->Header) {\r
+    mWarningIf->Warning = EFI_STRING_ID_INVALID;\r
+    mWarningIf->TimeOut = 0;\r
+  }\r
+\r
+  VOID SetWarning (IN EFI_STRING_ID Warning) {\r
+    mWarningIf->Warning = Warning;\r
+  }\r
+\r
+  VOID SetTimeOut (IN UINT8 TimeOut) {\r
+    mWarningIf->TimeOut = TimeOut;\r
+  }\r
+};\r
+\r
 class CIfrNoSubmitIf : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_NO_SUBMIT_IF *mNoSubmitIf;\r
 class CIfrNoSubmitIf : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_NO_SUBMIT_IF *mNoSubmitIf;\r
index 253834508ac42a49c61dfcedb548120735d6e010..61b68f5fb7aeea3625bfb74be091c0b39b412ddc 100644 (file)
@@ -184,6 +184,7 @@ VfrParserStart (
 #token Goto("goto")                             "goto"\r
 #token FormSetGuid("formsetguid")               "formsetguid"\r
 #token InconsistentIf("inconsistentif")         "inconsistentif"\r
 #token Goto("goto")                             "goto"\r
 #token FormSetGuid("formsetguid")               "formsetguid"\r
 #token InconsistentIf("inconsistentif")         "inconsistentif"\r
+#token WarningIf("warningif")                   "warningif"\r
 #token NoSubmitIf("nosubmitif")                 "nosubmitif"\r
 #token EndIf("endif")                           "endif"\r
 #token Key("key")                               "key"\r
 #token NoSubmitIf("nosubmitif")                 "nosubmitif"\r
 #token EndIf("endif")                           "endif"\r
 #token Key("key")                               "key"\r
@@ -2627,7 +2628,8 @@ vfrStatementQuestionTag :
   vfrStatementRefresh           |\r
   vfrStatementVarstoreDevice    |\r
   vfrStatementExtension         |\r
   vfrStatementRefresh           |\r
   vfrStatementVarstoreDevice    |\r
   vfrStatementExtension         |\r
-  vfrStatementRefreshEvent\r
+  vfrStatementRefreshEvent      |\r
+  vfrStatementWarningIf\r
   ;\r
 \r
 vfrStatementQuestionTagList :\r
   ;\r
 \r
 vfrStatementQuestionTagList :\r
@@ -2825,6 +2827,15 @@ vfrStatementNoSubmitIf :
   E:EndIf                                              << CRT_END_OP (E); >>\r
   ;\r
 \r
   E:EndIf                                              << CRT_END_OP (E); >>\r
   ;\r
 \r
+vfrStatementWarningIf :\r
+  << CIfrWarningIf WIObj; >>\r
+  L:WarningIf                                          << WIObj.SetLineNo(L->getLine()); >>\r
+  Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" ","     << WIObj.SetWarning (_STOSID(S->getText())); >>\r
+  {Timeout "=" T:Number ","                            << WIObj.SetTimeOut (_STOU8(T->getText())); >>}\r
+  vfrStatementExpression[0]\r
+  E:EndIf                                              << CRT_END_OP (E); >>\r
+  ;\r
+\r
 vfrStatementDisableIfQuest :\r
   << \r
     CIfrDisableIf DIObj; \r
 vfrStatementDisableIfQuest :\r
   << \r
     CIfrDisableIf DIObj; \r
index 7414d30f49eaed39241c26a71192e5227b760ae6..25546cdfe92094e8e4dbe331db4258c60e309281 100644 (file)
@@ -13,4 +13,4 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
-gBUILD_VERSION = ""\r
+gBUILD_VERSION = "Build 2601"\r
index edd46967533b6e4616b5b7d6371d4d0f77920c06..fa6c26aa76a4b12bda2556a01a70d9b4a84b1404 100644 (file)
@@ -17,4 +17,4 @@
 Build version information\r
 '''\r
 \r
 Build version information\r
 '''\r
 \r
-gBUILD_VERSION = ""\r
+gBUILD_VERSION = "Build 2601"\r
index b2e98633af67bde0ebdefb8fde76b8599e8e8874..34000b5e8829d76b90e22c3ebe4c752f45a162f7 100644 (file)
@@ -827,6 +827,7 @@ class DscParser(MetaFileParser):
         except:
             EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile)
 
         except:
             EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile)
 
+        OwnerId = {}
         for Index in range(0, len(Content)):
             Line = CleanString(Content[Index])
             # skip empty line
         for Index in range(0, len(Content)):
             Line = CleanString(Content[Index])
             # skip empty line
@@ -847,6 +848,7 @@ class DscParser(MetaFileParser):
                 self._SubsectionType = MODEL_UNKNOWN
                 self._SubsectionName = ''
                 self._Owner[-1] = -1
                 self._SubsectionType = MODEL_UNKNOWN
                 self._SubsectionName = ''
                 self._Owner[-1] = -1
+                OwnerId = {}
                 continue
             # subsection header
             elif Line[0] == TAB_OPTION_START and Line[-1] == TAB_OPTION_END:
                 continue
             # subsection header
             elif Line[0] == TAB_OPTION_START and Line[-1] == TAB_OPTION_END:
@@ -871,6 +873,9 @@ class DscParser(MetaFileParser):
             # LineBegin=-1, ColumnBegin=-1, LineEnd=-1, ColumnEnd=-1, Enabled=-1
             #
             for Arch, ModuleType in self._Scope:
             # LineBegin=-1, ColumnBegin=-1, LineEnd=-1, ColumnEnd=-1, Enabled=-1
             #
             for Arch, ModuleType in self._Scope:
+                Owner = self._Owner[-1]
+                if self._SubsectionType != MODEL_UNKNOWN:
+                    Owner = OwnerId[Arch]
                 self._LastItem = self._Store(
                                         self._ItemType,
                                         self._ValueList[0],
                 self._LastItem = self._Store(
                                         self._ItemType,
                                         self._ValueList[0],
@@ -878,7 +883,7 @@ class DscParser(MetaFileParser):
                                         self._ValueList[2],
                                         Arch,
                                         ModuleType,
                                         self._ValueList[2],
                                         Arch,
                                         ModuleType,
-                                        self._Owner[-1],
+                                        Owner,
                                         self._From,
                                         self._LineIndex + 1,
                                         - 1,
                                         self._From,
                                         self._LineIndex + 1,
                                         - 1,
@@ -886,6 +891,8 @@ class DscParser(MetaFileParser):
                                         - 1,
                                         self._Enabled
                                         )
                                         - 1,
                                         self._Enabled
                                         )
+                if self._SubsectionType == MODEL_UNKNOWN and self._InSubsection:
+                    OwnerId[Arch] = self._LastItem
 
         if self._DirectiveStack:
             Type, Line, Text = self._DirectiveStack[-1]
 
         if self._DirectiveStack:
             Type, Line, Text = self._DirectiveStack[-1]
@@ -1040,6 +1047,11 @@ class DscParser(MetaFileParser):
                             ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
                             File=self.MetaFile, Line=self._LineIndex + 1)
         if self._ValueList[2] == '':
                             ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
                             File=self.MetaFile, Line=self._LineIndex + 1)
         if self._ValueList[2] == '':
+            #
+            # The PCD values are optional for FIXEDATBUILD and PATCHABLEINMODULE
+            #
+            if self._SectionType in (MODEL_PCD_FIXED_AT_BUILD, MODEL_PCD_PATCHABLE_IN_MODULE):
+                return
             EdkLogger.error('Parser', FORMAT_INVALID, "No PCD value given",
                             ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
                             File=self.MetaFile, Line=self._LineIndex + 1)
             EdkLogger.error('Parser', FORMAT_INVALID, "No PCD value given",
                             ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
                             File=self.MetaFile, Line=self._LineIndex + 1)