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:
Liming Gao
2013-09-24 07:13:44 +00:00
committed by lgao4
parent ac0908afc2
commit ea0f646433
33 changed files with 58 additions and 7 deletions

View File

@@ -14,4 +14,4 @@
**/
#define __BUILD_VERSION ""
#define __BUILD_VERSION "Build 2601"

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -13,4 +13,4 @@
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
gBUILD_VERSION = ""
gBUILD_VERSION = "Build 2601"

View File

@@ -17,4 +17,4 @@
Build version information
'''
gBUILD_VERSION = ""
gBUILD_VERSION = "Build 2601"

View File

@@ -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)