Sync BaseTool trunk (version r2601) into EDKII BaseTools.
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
This commit is contained in:
@@ -14,4 +14,4 @@
|
||||
|
||||
**/
|
||||
|
||||
#define __BUILD_VERSION ""
|
||||
#define __BUILD_VERSION "Build 2601"
|
||||
|
@@ -3,7 +3,7 @@
|
||||
IFR is primarily consumed by the EFI presentation engine, and produced by EFI
|
||||
internal application and drivers as well as all add-in card option-ROM drivers
|
||||
|
||||
Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
|
||||
This program and the accompanying materials are licensed and made available
|
||||
under the terms and conditions of the BSD License which accompanies this
|
||||
@@ -691,6 +691,7 @@ typedef union {
|
||||
#define EFI_IFR_SECURITY_OP 0x60
|
||||
#define EFI_IFR_MODAL_TAG_OP 0x61
|
||||
#define EFI_IFR_REFRESH_ID_OP 0x62
|
||||
#define EFI_IFR_WARNING_IF_OP 0x63
|
||||
|
||||
|
||||
typedef struct _EFI_IFR_OP_HEADER {
|
||||
@@ -1015,6 +1016,12 @@ typedef struct _EFI_IFR_NO_SUBMIT_IF {
|
||||
EFI_STRING_ID Error;
|
||||
} EFI_IFR_NO_SUBMIT_IF;
|
||||
|
||||
typedef struct _EFI_IFR_WARNING_IF {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
EFI_STRING_ID Warning;
|
||||
UINT8 TimeOut;
|
||||
} EFI_IFR_WARNING_IF;
|
||||
|
||||
typedef struct _EFI_IFR_REFRESH {
|
||||
EFI_IFR_OP_HEADER Header;
|
||||
UINT8 RefreshInterval;
|
||||
|
@@ -1673,6 +1673,7 @@ static struct {
|
||||
{ sizeof (EFI_IFR_SECURITY), 0 }, // EFI_IFR_SECURITY_OP - 0x60
|
||||
{ sizeof (EFI_IFR_MODAL_TAG), 0}, // EFI_IFR_MODAL_TAG_OP - 0x61
|
||||
{ sizeof (EFI_IFR_REFRESH_ID), 0}, // EFI_IFR_REFRESH_ID_OP - 0x62
|
||||
{ sizeof (EFI_IFR_WARNING_IF), 1}, // EFI_IFR_WARNING_IF_OP - 0x63
|
||||
};
|
||||
|
||||
#ifdef CIFROBJ_DEUBG
|
||||
@@ -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",
|
||||
"EFI_IFR_ONES", "EFI_IFR_UNDEFINED", "EFI_IFR_LENGTH", "EFI_IFR_DUP", "EFI_IFR_THIS", "EFI_IFR_SPAN",
|
||||
"EFI_IFR_VALUE", "EFI_IFR_DEFAULT", "EFI_IFR_DEFAULTSTORE", "EFI_IFR_FORM_MAP", "EFI_IFR_CATENATE", "EFI_IFR_GUID",
|
||||
"EFI_IFR_SECURITY", "EFI_IFR_MODAL_TAG", "EFI_IFR_REFRESH_ID",
|
||||
"EFI_IFR_SECURITY", "EFI_IFR_MODAL_TAG", "EFI_IFR_REFRESH_ID", "EFI_IFR_WARNING_IF",
|
||||
};
|
||||
|
||||
VOID
|
||||
|
@@ -1612,6 +1612,26 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class CIfrWarningIf : public CIfrObj, public CIfrOpHeader {
|
||||
private:
|
||||
EFI_IFR_WARNING_IF *mWarningIf;
|
||||
|
||||
public:
|
||||
CIfrWarningIf () : CIfrObj (EFI_IFR_WARNING_IF_OP, (CHAR8 **)&mWarningIf),
|
||||
CIfrOpHeader (EFI_IFR_WARNING_IF_OP, &mWarningIf->Header) {
|
||||
mWarningIf->Warning = EFI_STRING_ID_INVALID;
|
||||
mWarningIf->TimeOut = 0;
|
||||
}
|
||||
|
||||
VOID SetWarning (IN EFI_STRING_ID Warning) {
|
||||
mWarningIf->Warning = Warning;
|
||||
}
|
||||
|
||||
VOID SetTimeOut (IN UINT8 TimeOut) {
|
||||
mWarningIf->TimeOut = TimeOut;
|
||||
}
|
||||
};
|
||||
|
||||
class CIfrNoSubmitIf : public CIfrObj, public CIfrOpHeader {
|
||||
private:
|
||||
EFI_IFR_NO_SUBMIT_IF *mNoSubmitIf;
|
||||
|
@@ -184,6 +184,7 @@ VfrParserStart (
|
||||
#token Goto("goto") "goto"
|
||||
#token FormSetGuid("formsetguid") "formsetguid"
|
||||
#token InconsistentIf("inconsistentif") "inconsistentif"
|
||||
#token WarningIf("warningif") "warningif"
|
||||
#token NoSubmitIf("nosubmitif") "nosubmitif"
|
||||
#token EndIf("endif") "endif"
|
||||
#token Key("key") "key"
|
||||
@@ -2627,7 +2628,8 @@ vfrStatementQuestionTag :
|
||||
vfrStatementRefresh |
|
||||
vfrStatementVarstoreDevice |
|
||||
vfrStatementExtension |
|
||||
vfrStatementRefreshEvent
|
||||
vfrStatementRefreshEvent |
|
||||
vfrStatementWarningIf
|
||||
;
|
||||
|
||||
vfrStatementQuestionTagList :
|
||||
@@ -2825,6 +2827,15 @@ vfrStatementNoSubmitIf :
|
||||
E:EndIf << CRT_END_OP (E); >>
|
||||
;
|
||||
|
||||
vfrStatementWarningIf :
|
||||
<< CIfrWarningIf WIObj; >>
|
||||
L:WarningIf << WIObj.SetLineNo(L->getLine()); >>
|
||||
Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" "," << WIObj.SetWarning (_STOSID(S->getText())); >>
|
||||
{Timeout "=" T:Number "," << WIObj.SetTimeOut (_STOU8(T->getText())); >>}
|
||||
vfrStatementExpression[0]
|
||||
E:EndIf << CRT_END_OP (E); >>
|
||||
;
|
||||
|
||||
vfrStatementDisableIfQuest :
|
||||
<<
|
||||
CIfrDisableIf DIObj;
|
||||
|
@@ -13,4 +13,4 @@
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
|
||||
gBUILD_VERSION = ""
|
||||
gBUILD_VERSION = "Build 2601"
|
||||
|
@@ -17,4 +17,4 @@
|
||||
Build version information
|
||||
'''
|
||||
|
||||
gBUILD_VERSION = ""
|
||||
gBUILD_VERSION = "Build 2601"
|
||||
|
@@ -827,6 +827,7 @@ class DscParser(MetaFileParser):
|
||||
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
|
||||
@@ -847,6 +848,7 @@ class DscParser(MetaFileParser):
|
||||
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:
|
||||
@@ -871,6 +873,9 @@ class DscParser(MetaFileParser):
|
||||
# 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],
|
||||
@@ -878,7 +883,7 @@ class DscParser(MetaFileParser):
|
||||
self._ValueList[2],
|
||||
Arch,
|
||||
ModuleType,
|
||||
self._Owner[-1],
|
||||
Owner,
|
||||
self._From,
|
||||
self._LineIndex + 1,
|
||||
- 1,
|
||||
@@ -886,6 +891,8 @@ class DscParser(MetaFileParser):
|
||||
- 1,
|
||||
self._Enabled
|
||||
)
|
||||
if self._SubsectionType == MODEL_UNKNOWN and self._InSubsection:
|
||||
OwnerId[Arch] = self._LastItem
|
||||
|
||||
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] == '':
|
||||
#
|
||||
# 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)
|
||||
|
Reference in New Issue
Block a user