Sync basetools' source and binary files with r1707 of the basetools project.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9257 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -201,7 +201,11 @@ CVfrErrorHandle::PrintMsg (
|
||||
{
|
||||
CHAR8 *FileName = NULL;
|
||||
UINT32 FileLine;
|
||||
|
||||
|
||||
if (strncmp ("Warning", MsgType, strlen ("Warning")) == 0) {
|
||||
VerboseMsg (ErrorMsg);
|
||||
return;
|
||||
}
|
||||
GetFileNameLineNum (LineNum, &FileName, &FileLine);
|
||||
Error (FileName, FileLine, 0x3000, TokName, "\t%s\n", ErrorMsg);
|
||||
}
|
||||
|
@@ -787,11 +787,22 @@ CIfrRecordInfoDB::IfrRecordInfoUpdate (
|
||||
)
|
||||
{
|
||||
SIfrRecord *pNode;
|
||||
SIfrRecord *Prev;
|
||||
|
||||
if ((pNode = GetRecordInfoFromIdx (RecordIdx)) == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (LineNo == 0) {
|
||||
//
|
||||
// Line number is not specified explicitly, try to use line number of previous opcode
|
||||
//
|
||||
Prev = GetRecordInfoFromIdx (RecordIdx - 1);
|
||||
if (Prev != NULL) {
|
||||
LineNo = Prev->mLineNo;
|
||||
}
|
||||
}
|
||||
|
||||
pNode->mLineNo = LineNo;
|
||||
pNode->mOffset = Offset;
|
||||
pNode->mBinBufLen = BinBufLen;
|
||||
|
@@ -254,7 +254,7 @@ public:
|
||||
|
||||
VOID DecLength (UINT8 Size) {
|
||||
if (mHeader->Length >= Size) {
|
||||
mHeader -= Size;
|
||||
mHeader -= Size;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ public:
|
||||
|
||||
VOID SetVarStoreInfo (IN EFI_VARSTORE_INFO *Info) {
|
||||
mHeader->VarStoreId = Info->mVarStoreId;
|
||||
mHeader->VarStoreInfo.VarName = Info->mInfo.mVarName;
|
||||
mHeader->VarStoreInfo.VarName = Info->mInfo.mVarName;
|
||||
mHeader->VarStoreInfo.VarOffset = Info->mInfo.mVarOffset;
|
||||
}
|
||||
|
||||
@@ -398,7 +398,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
static CIfrQuestionHeader *gCurrentQuestion = NULL;
|
||||
static CIfrQuestionHeader *gCurrentQuestion = NULL;
|
||||
static CIfrObj *gCurrentIfrOpcode = NULL;
|
||||
|
||||
/*
|
||||
* The definition of CIfrMinMaxStepData
|
||||
@@ -537,6 +538,12 @@ public:
|
||||
}
|
||||
|
||||
EFI_VFR_RETURN_CODE SetFormId (IN EFI_FORM_ID FormId) {
|
||||
if (FormId == 0) {
|
||||
//
|
||||
// FormId can't be 0.
|
||||
//
|
||||
return VFR_RETURN_INVALID_PARAMETER;
|
||||
}
|
||||
if (CIfrForm::ChekFormIdFree (FormId) == FALSE) {
|
||||
return VFR_RETURN_FORMID_REDEFINED;
|
||||
}
|
||||
@@ -688,7 +695,7 @@ public:
|
||||
) : CIfrObj (EFI_IFR_DEFAULT_OP, (CHAR8 **)&mDefault),
|
||||
CIfrOpHeader (EFI_IFR_DEFAULT_OP, &mDefault->Header) {
|
||||
mDefault->Type = Type;
|
||||
mDefault->Value = Value;
|
||||
mDefault->Value = Value;
|
||||
mDefault->DefaultId = DefaultId;
|
||||
}
|
||||
|
||||
@@ -722,7 +729,7 @@ private:
|
||||
public:
|
||||
CIfrSubtitle () : CIfrObj (EFI_IFR_SUBTITLE_OP, (CHAR8 **)&mSubtitle),
|
||||
CIfrOpHeader (EFI_IFR_SUBTITLE_OP, &mSubtitle->Header),
|
||||
CIfrStatementHeader (&mSubtitle->Statement) {
|
||||
CIfrStatementHeader (&mSubtitle->Statement) {
|
||||
mSubtitle->Flags = 0;
|
||||
}
|
||||
|
||||
@@ -856,7 +863,7 @@ private:
|
||||
public:
|
||||
CIfrResetButton () : CIfrObj (EFI_IFR_RESET_BUTTON_OP, (CHAR8 **)&mResetButton),
|
||||
CIfrOpHeader (EFI_IFR_RESET_BUTTON_OP, &mResetButton->Header),
|
||||
CIfrStatementHeader (&mResetButton->Question.Header) {
|
||||
CIfrStatementHeader (&mResetButton->Statement) {
|
||||
mResetButton->DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
|
||||
}
|
||||
|
||||
@@ -874,11 +881,11 @@ public:
|
||||
CIfrOpHeader (EFI_IFR_CHECKBOX_OP, &mCheckBox->Header),
|
||||
CIfrQuestionHeader (&mCheckBox->Question) {
|
||||
mCheckBox->Flags = 0;
|
||||
gCurrentQuestion = this;
|
||||
gCurrentQuestion = this;
|
||||
}
|
||||
|
||||
~CIfrCheckBox () {
|
||||
gCurrentQuestion = NULL;
|
||||
gCurrentQuestion = NULL;
|
||||
}
|
||||
|
||||
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, UINT8 LFlags) {
|
||||
@@ -974,11 +981,13 @@ public:
|
||||
CIfrQuestionHeader (&mNumeric->Question),
|
||||
CIfrMinMaxStepData (&mNumeric->data) {
|
||||
mNumeric->Flags = EFI_IFR_NUMERIC_SIZE_1 | EFI_IFR_DISPLAY_UINT_DEC;
|
||||
gCurrentQuestion = this;
|
||||
gCurrentQuestion = this;
|
||||
gCurrentIfrOpcode = this;
|
||||
}
|
||||
|
||||
~CIfrNumeric () {
|
||||
gCurrentQuestion = NULL;
|
||||
gCurrentQuestion = NULL;
|
||||
gCurrentIfrOpcode = NULL;
|
||||
}
|
||||
|
||||
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {
|
||||
@@ -1008,11 +1017,13 @@ public:
|
||||
CIfrQuestionHeader (&mOneOf->Question),
|
||||
CIfrMinMaxStepData (&mOneOf->data) {
|
||||
mOneOf->Flags = 0;
|
||||
gCurrentQuestion = this;
|
||||
gCurrentQuestion = this;
|
||||
gCurrentIfrOpcode = this;
|
||||
}
|
||||
|
||||
~CIfrOneOf () {
|
||||
gCurrentQuestion = NULL;
|
||||
gCurrentQuestion = NULL;
|
||||
gCurrentIfrOpcode = NULL;
|
||||
}
|
||||
|
||||
EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {
|
||||
|
@@ -1078,7 +1078,7 @@ vfrStatementRules :
|
||||
vfrStatementDefault :
|
||||
<<
|
||||
BOOLEAN IsExp = FALSE;
|
||||
EFI_IFR_TYPE_VALUE Val = gZeroEfiIfrTypeValue;
|
||||
EFI_IFR_TYPE_VALUE Val = gZeroEfiIfrTypeValue;
|
||||
CIfrDefault DObj;
|
||||
EFI_DEFAULT_ID DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
|
||||
CHAR8 *VarStoreName = NULL;
|
||||
@@ -1087,9 +1087,73 @@ vfrStatementDefault :
|
||||
D:Default << DObj.SetLineNo(D->getLine()); >>
|
||||
(
|
||||
(
|
||||
vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); >>
|
||||
| "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] ","
|
||||
<< DObj.SetType (_GET_CURRQEST_DATATYPE()); DObj.SetValue(Val); >>
|
||||
vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); CIfrEnd EndObj1; EndObj1.SetLineNo(D->getLine()); >>
|
||||
| "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] "," <<
|
||||
|
||||
if (gCurrentIfrOpcode != NULL && gCurrentIfrOpcode->GetObjBinAddr() != NULL) {
|
||||
EFI_IFR_OP_HEADER *TempOpCode;
|
||||
TempOpCode = (EFI_IFR_OP_HEADER *) gCurrentIfrOpcode->GetObjBinAddr();
|
||||
switch (TempOpCode->OpCode) {
|
||||
case EFI_IFR_NUMERIC_OP:
|
||||
EFI_IFR_NUMERIC *TempNumricCode;
|
||||
TempNumricCode = (EFI_IFR_NUMERIC *) TempOpCode;
|
||||
switch (_GET_CURRQEST_DATATYPE()) {
|
||||
case EFI_IFR_TYPE_NUM_SIZE_64:
|
||||
if (Val.u64 < TempNumricCode->data.u64.MinValue || Val.u64 > TempNumricCode->data.u64.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_32:
|
||||
if (Val.u32 < TempNumricCode->data.u32.MinValue || Val.u32 > TempNumricCode->data.u32.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_16:
|
||||
if (Val.u16 < TempNumricCode->data.u16.MinValue || Val.u16 > TempNumricCode->data.u16.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_8:
|
||||
if (Val.u8 < TempNumricCode->data.u8.MinValue || Val.u8 > TempNumricCode->data.u8.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_ONE_OF_OP:
|
||||
EFI_IFR_ONE_OF *TempOneOfCode;
|
||||
TempOneOfCode = (EFI_IFR_ONE_OF *) TempOpCode;
|
||||
if (TempOneOfCode->data.u64.MinValue != 0 || TempOneOfCode->data.u64.MaxValue != 0 || TempOneOfCode->data.u64.Step != 0) {
|
||||
//OneOf MinMaxStep Data is set, Val value will be checked for MinMaxStep.
|
||||
switch (_GET_CURRQEST_DATATYPE()) {
|
||||
case EFI_IFR_TYPE_NUM_SIZE_64:
|
||||
if (Val.u64 < TempOneOfCode->data.u64.MinValue || Val.u64 > TempOneOfCode->data.u64.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_32:
|
||||
if (Val.u32 < TempOneOfCode->data.u32.MinValue || Val.u32 > TempOneOfCode->data.u32.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_16:
|
||||
if (Val.u16 < TempOneOfCode->data.u16.MinValue || Val.u16 > TempOneOfCode->data.u16.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_8:
|
||||
if (Val.u8 < TempOneOfCode->data.u8.MinValue || Val.u8 > TempOneOfCode->data.u8.MaxValue) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
DObj.SetType (_GET_CURRQEST_DATATYPE());
|
||||
DObj.SetValue(Val);
|
||||
>>
|
||||
)
|
||||
{
|
||||
DefaultStore "=" SN:StringIdentifier "," << _PCATCH(mCVfrDefaultStore.GetDefaultId (SN->getText(), &DefaultId), SN); DObj.SetDefaultId (DefaultId); >>
|
||||
@@ -1167,7 +1231,7 @@ flagsField :
|
||||
vfrStatementValue :
|
||||
<< CIfrValue VObj; >>
|
||||
V:Value << VObj.SetLineNo(V->getLine()); >>
|
||||
"=" vfrStatementExpression[0]
|
||||
"=" vfrStatementExpression[0] << {CIfrEnd EndObj; EndObj.SetLineNo(V->getLine());} >>
|
||||
;
|
||||
|
||||
vfrStatementSubTitle :
|
||||
@@ -1588,15 +1652,30 @@ vfrStatementDate :
|
||||
;
|
||||
|
||||
minMaxDateStepDefault[EFI_HII_DATE & D, UINT8 KeyValue] :
|
||||
Minimum "=" Number ","
|
||||
Maximum "=" Number ","
|
||||
Minimum "=" MinN:Number ","
|
||||
Maximum "=" MaxN:Number ","
|
||||
{ "step" "=" Number "," }
|
||||
{
|
||||
"default" "=" N:Number "," <<
|
||||
switch (KeyValue) {
|
||||
case 0: D.Year = _STOU16(N->getText()); break;
|
||||
case 1: D.Month = _STOU8(N->getText()); break;
|
||||
case 2: D.Day = _STOU8(N->getText()); break;
|
||||
case 0:
|
||||
D.Year = _STOU16(N->getText());
|
||||
if (D.Year < _STOU16 (MinN->getText()) || D.Year > _STOU16 (MaxN->getText())) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default value must be between Min year and Max year.");
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
D.Month = _STOU8(N->getText());
|
||||
if (D.Month < 1 || D.Month > 12) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default value must be between 1 and 12.");
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
D.Day = _STOU8(N->getText());
|
||||
if (D.Day < 1 || D.Day > 31) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default value must be between 1 and 31.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
>>
|
||||
}
|
||||
@@ -1642,10 +1721,30 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] :
|
||||
Maximum "=" A:Number ","
|
||||
<<
|
||||
switch (_GET_CURRQEST_DATATYPE ()) {
|
||||
case EFI_IFR_TYPE_NUM_SIZE_64 : MaxU8 = _STOU64(A->getText()); break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_32 : MaxU4 = _STOU32(A->getText()); break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_16 : MaxU2 = _STOU16(A->getText()); break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_8 : MaxU1 = _STOU8(A->getText()); break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_64 :
|
||||
MaxU8 = _STOU64(A->getText());
|
||||
if (MaxU8 < MinU8) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_32 :
|
||||
MaxU4 = _STOU32(A->getText());
|
||||
if (MaxU4 < MinU4) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_16 :
|
||||
MaxU2 = _STOU16(A->getText());
|
||||
if (MaxU2 < MinU2) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
|
||||
}
|
||||
break;
|
||||
case EFI_IFR_TYPE_NUM_SIZE_8 :
|
||||
MaxU1 = _STOU8(A->getText());
|
||||
if (MaxU1 < MinU1) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
|
||||
}
|
||||
break;
|
||||
}
|
||||
>>
|
||||
{
|
||||
@@ -1894,9 +1993,24 @@ minMaxTimeStepDefault[EFI_HII_TIME & T, UINT8 KeyValue] :
|
||||
{
|
||||
"default" "=" N:Number "," <<
|
||||
switch (KeyValue) {
|
||||
case 0: T.Hour = _STOU8(N->getText()); break;
|
||||
case 1: T.Minute = _STOU8(N->getText()); break;
|
||||
case 2: T.Second = _STOU8(N->getText()); break;
|
||||
case 0:
|
||||
T.Hour = _STOU8(N->getText());
|
||||
if (T.Hour > 23) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Hour default value must be between 0 and 23.");
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
T.Minute = _STOU8(N->getText());
|
||||
if (T.Minute > 59) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Minute default value must be between 0 and 59.");
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
T.Second = _STOU8(N->getText());
|
||||
if (T.Second > 59) {
|
||||
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Second default value must be between 0 and 59.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
>>
|
||||
}
|
||||
@@ -3090,7 +3204,6 @@ public:
|
||||
|
||||
VOID _STRCAT (IN OUT CHAR8 **, IN CHAR8 *);
|
||||
|
||||
VOID _CRGUID (EFI_GUID *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *);
|
||||
VOID _DeclareDefaultLinearVarStore (IN UINT32);
|
||||
VOID _DeclareStandardDefaultStorage (IN UINT32);
|
||||
VOID _DeclareDefaultFrameworkVarStore (IN UINT32);
|
||||
@@ -3490,35 +3603,6 @@ EfiVfrParser::_STRCAT (
|
||||
*Dest = NewStr;
|
||||
}
|
||||
|
||||
VOID
|
||||
EfiVfrParser::_CRGUID (
|
||||
IN EFI_GUID *Guid,
|
||||
IN CHAR8 *G1,
|
||||
IN CHAR8 *G2,
|
||||
IN CHAR8 *G3,
|
||||
IN CHAR8 *G4,
|
||||
IN CHAR8 *G5,
|
||||
IN CHAR8 *G6,
|
||||
IN CHAR8 *G7,
|
||||
IN CHAR8 *G8,
|
||||
IN CHAR8 *G9,
|
||||
IN CHAR8 *G10,
|
||||
IN CHAR8 *G11
|
||||
)
|
||||
{
|
||||
Guid->Data1 = _STOU32 (G1);
|
||||
Guid->Data2 = _STOU16 (G2);
|
||||
Guid->Data3 = _STOU16 (G3);
|
||||
Guid->Data4[0] = _STOU8(G4);
|
||||
Guid->Data4[1] = _STOU8(G5);
|
||||
Guid->Data4[2] = _STOU8(G6);
|
||||
Guid->Data4[3] = _STOU8(G7);
|
||||
Guid->Data4[4] = _STOU8(G8);
|
||||
Guid->Data4[5] = _STOU8(G9);
|
||||
Guid->Data4[6] = _STOU8(G10);
|
||||
Guid->Data4[7] = _STOU8(G11);
|
||||
}
|
||||
|
||||
//
|
||||
// framework vfr to default declare varstore for each structure
|
||||
//
|
||||
|
@@ -870,7 +870,7 @@ CVfrVarDataTypeDB::Pack (
|
||||
SVfrPackStackNode *pNode = NULL;
|
||||
|
||||
if (mPackStack == NULL) {
|
||||
gCVfrErrorHandle.PrintMsg (LineNum, "", "Warning", "#pragma pack(pop...) : more pops than pushes");
|
||||
gCVfrErrorHandle.PrintMsg (LineNum, "", "Error", "#pragma pack(pop...) : more pops than pushes");
|
||||
}
|
||||
|
||||
for (pNode = mPackStack; pNode != NULL; pNode = pNode->mNext) {
|
||||
@@ -884,7 +884,7 @@ CVfrVarDataTypeDB::Pack (
|
||||
if (Action & VFR_PACK_ASSIGN) {
|
||||
PackAlign = (Number > 1) ? Number + Number % 2 : Number;
|
||||
if ((PackAlign == 0) || (PackAlign > 16)) {
|
||||
gCVfrErrorHandle.PrintMsg (LineNum, "", "Warning", "expected pragma parameter to be '1', '2', '4', '8', or '16'");
|
||||
gCVfrErrorHandle.PrintMsg (LineNum, "", "Error", "expected pragma parameter to be '1', '2', '4', '8', or '16'");
|
||||
} else {
|
||||
mPackAlign = PackAlign;
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
Vfr common library functions.
|
||||
|
||||
Copyright (c) 2004 - 2008, Intel Corporation
|
||||
Copyright (c) 2004 - 2009, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -421,7 +421,4 @@ public:
|
||||
UINT8 GetRuleId (IN CHAR8 *);
|
||||
};
|
||||
|
||||
#define MIN(v1, v2) (((v1) < (v2)) ? (v1) : (v2))
|
||||
#define MAX(v1, v2) (((v1) > (v2)) ? (v1) : (v2))
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user