From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id C7B42941EA2 for ; Wed, 20 Dec 2023 23:31:58 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=DkObAqhy6Zp6FyFr3SqJwPn8n3rpjUrm5RC6oFKQcfA=; c=relaxed/simple; d=groups.io; h=Feedback-ID:Message-ID:Date:MIME-Version:User-Agent:Subject:To:Cc:References:From:In-Reply-To:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1703115117; v=1; b=PoQEs8M3BL7OAGyAfAp4+34R3meoVcfm1OgBZpmk2HvrGGgfXbvFtdwljMpzM+BGxnQfV6LG Lh10ZyL0iXUQxTRDAyDc3liP7EYAouSKmg5f4XN2Dd4yfG9JuzIC/YWiek++Q4UHQb0xVBy9v/x doQeE3isfEy69jf706S7nVFg= X-Received: by 127.0.0.2 with SMTP id k1vfYY7687511xRd6eTxw3lK; Wed, 20 Dec 2023 15:31:57 -0800 X-Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by mx.groups.io with SMTP id smtpd.web10.35914.1703115116507214668 for ; Wed, 20 Dec 2023 15:31:56 -0800 X-Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailout.nyi.internal (Postfix) with ESMTP id 938335C0696; Wed, 20 Dec 2023 18:31:55 -0500 (EST) X-Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Wed, 20 Dec 2023 18:31:55 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvddufedguddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtvdejnecuhfhrohhmpeftvggs vggttggrucevrhgrnhcuoehrvggsvggttggrsegsshguihhordgtohhmqeenucggtffrrg htthgvrhhnpedtgffhheetgfetffdugeevvdfhtdffgfelgeeileevudefvddtkeelleel geetjeenucffohhmrghinhepvhhfrhhshihnthgrgidrghgsnecuvehluhhsthgvrhfuih iivgeptdenucfrrghrrghmpehmrghilhhfrhhomheprhgvsggvtggtrgessghsughiohdr tghomh X-ME-Proxy: Feedback-ID: i5b994698:Fastmail X-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 20 Dec 2023 18:31:54 -0500 (EST) Message-ID: Date: Wed, 20 Dec 2023 16:31:50 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [edk2-devel] [PATCH] BaseTools: VfrCompiler Adds DefaultValueError Feature To: Yuting Yang , devel@edk2.groups.io Cc: Liming Gao , Bob Feng , Christine Chen References: <20231212084354.755-1-yuting2.yang@intel.com> From: "Rebecca Cran" In-Reply-To: <20231212084354.755-1-yuting2.yang@intel.com> Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,rebecca@bsdio.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: HYfp6UAK5HIa11rk3drwNF97x7686176AA= Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=PoQEs8M3; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io I see two patches with the same subject line sent within about 15=20 minutes of each other. Could you confirm whether I should review this one (1:43am) or the other=20 (1:27am) please? Thanks. Rebecca Cran On 12/12/2023 1:43 AM, Yuting Yang wrote: > Add --catch_default option > Raise a DefaultValueError when encountering VFR default definitions > to help remove default variables. > S > Add --except_list option > Exclude packages that don't require enabling the catch_default function. > > Cc: Rebecca Cran > Cc: Liming Gao > Cc: Bob Feng > Cc: Christine Chen > Cc: Yuting Yang > > Signed-off-by: Yuting Yang > --- > BaseTools/Source/C/VfrCompile/VfrCompiler.cpp | 40 ++- > BaseTools/Source/C/VfrCompile/VfrCompiler.h | 3 + > BaseTools/Source/C/VfrCompile/VfrError.cpp | 3 +- > BaseTools/Source/C/VfrCompile/VfrError.h | 3 +- > BaseTools/Source/C/VfrCompile/VfrFormPkg.h | 1 + > BaseTools/Source/C/VfrCompile/VfrSyntax.g | 238 ++++++++++-------- > 6 files changed, 184 insertions(+), 104 deletions(-) > > diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp b/BaseTools/So= urce/C/VfrCompile/VfrCompiler.cpp > index 5f4d262d85..e97cebff65 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > +++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > @@ -78,6 +78,9 @@ CVfrCompiler::OptionInitialization ( > mOptions.WarningAsError =3D FALSE; > > mOptions.AutoDefault =3D FALSE; > > mOptions.CheckDefault =3D FALSE; > > + mOptions.IsCatchDefaultEnable =3D FALSE; > > + mOptions.ExceptionList =3D NULL; > > + mOptions.ExceptionListSize =3D 0; > > memset (&mOptions.OverrideClassGuid, 0, sizeof (EFI_GUID)); > > =20 > > if (Argc =3D=3D 1) { > > @@ -95,6 +98,23 @@ CVfrCompiler::OptionInitialization ( > Version (); > > SET_RUN_STATUS (STATUS_DEAD); > > return; > > + } else if (stricmp(Argv[Index], "--catch_default") =3D=3D 0){ > > + mOptions.IsCatchDefaultEnable =3D TRUE; > > + } else if (stricmp(Argv[Index], "--except_list") =3D=3D 0){ > > + INT32 Start =3D ++Index; > > + if ((Start >=3D Argc) || (Argv[Start][0] =3D=3D '-')) { > > + DebugError (NULL, 0, 1001, "Missing option", "-exception_list mi= ssing except list"); > > + goto Fail; > > + } > > + while ((Argv[Index][0] !=3D '-') && (Index < Argc - 1)) { > > + Index++; > > + } > > + INT32 End =3D Index--; > > + mOptions.ExceptionListSize =3D End - Start; > > + for (INT32 i =3D Start; i < End; i++) { > > + mOptions.ExceptionList =3D (CHAR8**) realloc(mOptions.ExceptionL= ist, (i - Start + 1) * sizeof(CHAR8*)); > > + mOptions.ExceptionList[i-Start] =3D Argv[i]; > > + } > > } else if (stricmp(Argv[Index], "-l") =3D=3D 0) { > > mOptions.CreateRecordListFile =3D TRUE; > > gCIfrRecordInfoDB.TurnOn (); > > @@ -179,7 +199,11 @@ CVfrCompiler::OptionInitialization ( > goto Fail; > > } > > strcpy (mOptions.VfrFileName, Argv[Index]); > > - > > + for (int i =3D 0; i < mOptions.ExceptionListSize; i++) { > > + if (strstr(mOptions.VfrFileName, mOptions.ExceptionList[i]) !=3D N= ULL) { > > + mOptions.IsCatchDefaultEnable =3D FALSE; > > + } > > + } > > if (mOptions.OutputDirectory =3D=3D NULL) { > > mOptions.OutputDirectory =3D (CHAR8 *) malloc (1); > > if (mOptions.OutputDirectory =3D=3D NULL) { > > @@ -217,6 +241,11 @@ Fail: > free (mOptions.VfrFileName); > > mOptions.VfrFileName =3D NULL; > > } > > + if (mOptions.ExceptionList !=3D NULL) { > > + free(mOptions.ExceptionList); > > + mOptions.ExceptionList =3D NULL; > > + > > + } > > if (mOptions.VfrBaseFileName !=3D NULL) { > > free (mOptions.VfrBaseFileName); > > mOptions.VfrBaseFileName =3D NULL; > > @@ -496,6 +525,11 @@ CVfrCompiler::~CVfrCompiler ( > mOptions.VfrBaseFileName =3D NULL; > > } > > =20 > > + if (mOptions.ExceptionList !=3D NULL) { > > + free (mOptions.ExceptionList); > > + mOptions.ExceptionList =3D NULL; > > + } > > + > > if (mOptions.OutputDirectory !=3D NULL) { > > free (mOptions.OutputDirectory); > > mOptions.OutputDirectory =3D NULL; > > @@ -679,7 +713,7 @@ CVfrCompiler::Compile ( > DebugError (NULL, 0, 0001, "Error opening the input file", "%s", In= FileName); > > goto Fail; > > } > > - > > + InputInfo.IsCatchDefaultEnable =3D mOptions.IsCatchDefaultEnable; > > if (mOptions.HasOverrideClassGuid) { > > InputInfo.OverrideClassGuid =3D &mOptions.OverrideClassGuid; > > } else { > > @@ -937,5 +971,3 @@ main ( > =20 > > return GetUtilityStatus (); > > } > > - > > - > > diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.h b/BaseTools/Sour= ce/C/VfrCompile/VfrCompiler.h > index b6e207d2ce..39e0a89a29 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrCompiler.h > +++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.h > @@ -52,6 +52,9 @@ typedef struct { > BOOLEAN WarningAsError; > > BOOLEAN AutoDefault; > > BOOLEAN CheckDefault; > > + BOOLEAN IsCatchDefaultEnable; > > + CHAR8** ExceptionList; > > + INT16 ExceptionListSize; > > } OPTIONS; > > =20 > > typedef enum { > > diff --git a/BaseTools/Source/C/VfrCompile/VfrError.cpp b/BaseTools/Sourc= e/C/VfrCompile/VfrError.cpp > index 65bb8e34fd..8a706f929b 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrError.cpp > +++ b/BaseTools/Source/C/VfrCompile/VfrError.cpp > @@ -49,7 +49,8 @@ static SVFR_WARNING_HANDLE VFR_WARNING_HANDLE_TABLE [] = =3D { > { VFR_WARNING_DEFAULT_VALUE_REDEFINED, ": default value re-defined wi= th different value"}, > > { VFR_WARNING_ACTION_WITH_TEXT_TWO, ": Action opcode should not have = TextTwo part"}, > > { VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, ": Not recommend to use obs= oleted framework opcode"}, > > - { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" } > > + { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" }, > > + { VFR_WARNING_UNSUPPORTED, ": pls remove the default values if necessa= ry" } > > }; > > =20 > > CVfrErrorHandle::CVfrErrorHandle ( > > diff --git a/BaseTools/Source/C/VfrCompile/VfrError.h b/BaseTools/Source/= C/VfrCompile/VfrError.h > index 7d16bd5f74..1b4bc173d2 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrError.h > +++ b/BaseTools/Source/C/VfrCompile/VfrError.h > @@ -47,7 +47,8 @@ typedef enum { > VFR_WARNING_DEFAULT_VALUE_REDEFINED =3D 0, > > VFR_WARNING_ACTION_WITH_TEXT_TWO, > > VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, > > - VFR_WARNING_CODEUNDEFINED > > + VFR_WARNING_CODEUNDEFINED, > > + VFR_WARNING_UNSUPPORTED > > } EFI_VFR_WARNING_CODE; > > =20 > > typedef struct _SVFR_ERROR_HANDLE { > > diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h b/BaseTools/Sourc= e/C/VfrCompile/VfrFormPkg.h > index 9ef6f07787..d8fada3bcb 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > @@ -96,6 +96,7 @@ struct SBufferNode { > =20 > > typedef struct { > > EFI_GUID *OverrideClassGuid; > > + BOOLEAN IsCatchDefaultEnable; > > } INPUT_INFO_TO_SYNTAX; > > =20 > > class CFormPkg { > > diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source= /C/VfrCompile/VfrSyntax.g > index 55fd067f8a..5daf1c423c 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g > +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g > @@ -50,6 +50,7 @@ VfrParserStart ( > { > > ParserBlackBox VfrParser(File= ); > > VfrParser.parser()->SetOverrideClassGuid (InputInfo->OverrideClassGui= d); > > + VfrParser.parser()->SetIsCatchDefaultEnable(InputInfo->IsCatchDefaultE= nable); > > return VfrParser.parser()->vfrProgram(); > > } > > >> > > @@ -386,8 +387,8 @@ dataStructField32 [BOOLEAN FieldInUnion]: > ; > > =20 > > dataStructField16 [BOOLEAN FieldInUnion]: > > - << > > - UINT32 ArrayNum =3D 0; > > + << > > + UINT32 ArrayNum =3D 0; > > >> > > ("UINT16" | "CHAR16") > > N:StringIdentifier > > @@ -737,7 +738,7 @@ vfrFormSetList : > ; > > =20 > > vfrStatementExtension: > > - << > > + << > > EFI_GUID Guid; > > CIfrGuid *GuidObj =3D NULL; > > CHAR8 *TypeName =3D NULL; > > @@ -751,7 +752,7 @@ vfrStatementExtension: > >> > > L:GuidOp > > Uuid "=3D" guidDefinition[Guid] > > - {"," DataType "=3D" > > + {"," DataType "=3D" > > ( > > U64:"UINT64" {OpenBracket AN1:Number CloseBracket <getText(), AN1->getLine());>>} > > << TypeName =3D U= 64->getText(); LineNum =3D U64->getLine(); >> > > @@ -770,7 +771,7 @@ vfrStatementExtension: > | T:"EFI_HII_TIME" {OpenBracket AN8:Number CloseBracket <getText(), AN8->getLine());>>} > > << TypeName =3D T= ->getText(); LineNum =3D T->getLine(); IsStruct =3D TRUE;>> > > | R:"EFI_HII_REF" {OpenBracket AN9:Number CloseBracket <getText(), AN9->getLine());>>} > > - << TypeName =3D R-= >getText(); LineNum =3D R->getLine(); IsStruct =3D TRUE;>> > > + << TypeName =3D R-= >getText(); LineNum =3D R->getLine(); IsStruct =3D TRUE;>> > > | TN:StringIdentifier {OpenBracket AN10:Number CloseBracket <getText(), AN10->getLine());>>} > > << TypeName =3D T= N->getText(); LineNum =3D TN->getLine(); IsStruct =3D TRUE;>> > > ) > > @@ -875,19 +876,19 @@ vfrExtensionData[UINT8 *DataBuff, UINT32 Size, CHAR= 8 *TypeName, UINT32 TypeSize, > memcpy (ByteOffset, &Data_U64, TypeSize); > > }else if (strcmp ("UINT32", TypeName) =3D=3D 0) { > > Data_U32 =3D _STOU32(RD->getText(), RD->getLine()); > > - memcpy (ByteOffset, &Data_U32, TypeSize); > > + memcpy (ByteOffset, &Data_U32, TypeSize); > > }else if (strcmp ("UINT16", TypeName) =3D=3D 0) { > > Data_U16 =3D _STOU16(RD->getText(), RD->getLine()); > > - memcpy (ByteOffset, &Data_U16, TypeSize); > > + memcpy (ByteOffset, &Data_U16, TypeSize); > > }else if (strcmp ("UINT8", TypeName) =3D=3D 0) { > > Data_U8 =3D _STOU8(RD->getText(), RD->getLine()); > > - memcpy (ByteOffset, &Data_U8, TypeSize); > > + memcpy (ByteOffset, &Data_U8, TypeSize); > > }else if (strcmp ("BOOLEAN", TypeName)=3D=3D 0) { > > Data_BL =3D _STOU8(RD->getText(), RD->getLine()); > > - memcpy (ByteOffset, &Data_BL, TypeSize); > > + memcpy (ByteOffset, &Data_BL, TypeSize); > > }else if (strcmp ("EFI_STRING_ID", TypeName) =3D=3D 0) { > > Data_SID =3D _STOSID(RD->getText(), RD->getLine()); > > - memcpy (ByteOffset, &Data_SID, TypeSize); > > + memcpy (ByteOffset, &Data_SID, TypeSize); > > } > > } else { > > gCVfrVarDataTypeDB.GetDataFieldInfo(TFName, FieldOffset, = FieldType, FieldSize, BitField); > > @@ -975,7 +976,15 @@ vfrExtensionData[UINT8 *DataBuff, UINT32 Size, CHAR8= *TypeName, UINT32 TypeSize, > =20 > > vfrStatementDefaultStore : > > << UINT16 DefaultId =3D EFI_HII_DEFAULT_CLASS_STANDARD; >> > > - D:DefaultStore N:StringIdentifier "," > > + D:DefaultStore N:StringIdentifier "," << > > + if (mIsCatchDefaul= tEnable) { > > + gCVfrErrorHandle.H= andleWarning ( > > + VFR_WARNING_UN= SUPPORTED, > > + D->getLine(), > > + D->getText() > > + ); > > + } > > + >> > > Prompt "=3D" "STRING_TOKEN" "\(" S:Number "\)" > > { > > "," Attribute "=3D" A:Number << DefaultId =3D = _STOU16(A->getText(), A->getLine()); >> > > @@ -1074,7 +1083,7 @@ vfrStatementVarStoreEfi : > | U64:"UINT64" "," << TypeName =3D U64= ->getText(); LineNum =3D U64->getLine(); >> > > | D:"EFI_HII_DATE" "," << TypeName =3D D->= getText(); LineNum =3D D->getLine(); >> > > | T:"EFI_HII_TIME" "," << TypeName =3D T->= getText(); LineNum =3D T->getLine(); >> > > - | R:"EFI_HII_REF" "," << TypeName =3D R->g= etText(); LineNum =3D R->getLine(); >> > > + | R:"EFI_HII_REF" "," << TypeName =3D R->g= etText(); LineNum =3D R->getLine(); >> > > ) > > { > > VarId "=3D" ID:Number "," << > > @@ -1092,8 +1101,8 @@ vfrStatementVarStoreEfi : > ( > > Name "=3D" SN:StringIdentifier "," << StoreName =3D = SN->getText(); >> > > | > > - Name "=3D" "STRING_TOKEN" "\(" VN:Number "\)" "," > > - VarSize "=3D" N:Number "," << > > + Name "=3D" "STRING_TOKEN" "\(" VN:Number "\)" "," > > + VarSize "=3D" N:Number "," << > > IsUEFI23EfiVarst= ore =3D FALSE; > > StoreName =3D gC= VfrStringDB.GetVarStoreNameFormStringId(_STOSID(VN->getText(), VN->getLine(= ))); > > if (StoreName = =3D=3D NULL) { > > @@ -1116,7 +1125,7 @@ vfrStatementVarStoreEfi : > break; > > case 8: > > TypeName =3D (C= HAR8 *) "UINT64"; > > - break; > > + break; > > default: > > _PCATCH (VFR_RE= TURN_UNSUPPORTED, N); > > break; > > @@ -1124,7 +1133,7 @@ vfrStatementVarStoreEfi : > >> > > ) > > =20 > > - Uuid "=3D" guidDefinition[Guid] << > > + Uuid "=3D" guidDefinition[Guid] << > > if (IsUEFI23EfiV= arstore) { > > _PCATCH(gCVfrDat= aStorage.DeclareBufferVarStore ( > > = StoreName, > > @@ -1150,7 +1159,7 @@ vfrStatementVarStoreEfi : > } > > VSEObj.SetGuid (= &Guid); > > VSEObj.SetVarSto= reId (VarStoreId); > > - > > + > > VSEObj.SetSize (= (UINT16) Size); > > VSEObj.SetName (= StoreName); > > if (IsUEFI23EfiV= arstore =3D=3D FALSE && StoreName !=3D NULL) { > > @@ -1184,7 +1193,7 @@ vfrStatementVarStoreNameValue : > >> > > } > > ( > > - Name "=3D" "STRING_TOKEN" "\(" N:Number "\)" "," << > > + Name "=3D" "STRING_TOKEN" "\(" N:Number "\)" "," << > > if (!Created) { > > _PCATCH(gCVfrD= ataStorage.DeclareNameVarStoreBegin (SN->getText(), VarStoreId), SN); > > Created =3D TR= UE; > > @@ -1245,12 +1254,12 @@ vfrStatementDisableIfFormSet : > vfrStatementSuppressIfFormSet : > > << CIfrSuppressIf SIObj;>> > > L:SuppressIf << > > - SIObj.SetLine= No(L->getLine()); > > + SIObj.SetLine= No(L->getLine()); > > >> > > { FLAGS "=3D" flagsField ( "\|" flagsField )* "," } > > vfrStatementExpression[0] ";" > > vfrFormSetList > > - E: EndIf > > + E: EndIf > > ";" << CRT_END_OP (E= ); >> > > ; > > =20 > > @@ -1491,7 +1500,7 @@ vfrQuestionDataFieldName [EFI_QUESTION_ID &QId, UIN= T32 &Mask, CHAR8 *&VarIdStr, > ( > > SN2:StringIdentifier << _STRCAT (&VarIdS= tr, SN2->getText()); LineNo =3D SN2->getLine(); >> > > ( > > - "." << > > + "." << > > _STRCAT (&VarIdS= tr, "."); > > if (mConstantOnl= yInExpression) { > > _PCATCH(VFR_RE= TURN_CONSTANT_ONLY, LineNo); > > @@ -1518,7 +1527,7 @@ vfrQuestionDataFieldName [EFI_QUESTION_ID &QId, UIN= T32 &Mask, CHAR8 *&VarIdStr, > ; > > =20 > > vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VALUE &Value, BOOLEAN &L= istType] : > > - << > > + << > > EFI_GUID Guid; > > BOOLEAN Negative =3D FALSE; > > BOOLEAN IntDecStyle =3D FALSE; > > @@ -1634,11 +1643,11 @@ vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VA= LUE &Value, BOOLEAN &ListType] > | Z:Zero << $Value.u8 = =3D _STOU8(Z->getText(), Z->getLine()); >> > > | HOUR:Number ":" MINUTE:Number ":" SECOND:Number << $Value.time = =3D _STOT(HOUR->getText(), MINUTE->getText(),SECOND->getText(), HOUR->getLi= ne()); >> > > | YEAR:Number "/" MONTH:Number "/" DAY:Number << $Value.date = =3D _STOD(YEAR->getText(), MONTH->getText(), DAY->getText(), YEAR->getLine(= )); >> > > - | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" "\= (" DP:Number "\)" > > + | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" "\= (" DP:Number "\)" > > << $Value.ref = =3D _STOR(QI->getText(), FI->getText(), &Guid, DP->getText(), QI->getLine()= ); >> > > | "STRING_TOKEN" "\(" S1:Number "\)" << $Value.string = =3D _STOSID(S1->getText(), S1->getLine()); >> > > | "\{" << ListType =3D TRU= E; >> > > - L1:Number << > > + L1:Number << > > switch (Type) { > > case EFI_IFR_T= YPE_NUM_SIZE_8 : > > Type8[Index]= =3D _STOU8(L1->getText(), L1->getLine()); > > @@ -1658,8 +1667,8 @@ vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VALU= E &Value, BOOLEAN &ListType] > Index++; > > >> > > ( > > - "," > > - L2:Number << > > + "," > > + L2:Number << > > switch (Type) { > > case EFI_IFR_T= YPE_NUM_SIZE_8 : > > Type8[Index]= =3D _STOU8(L2->getText(), L2->getLine()); > > @@ -1679,7 +1688,7 @@ vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VALU= E &Value, BOOLEAN &ListType] > Index++; > > >> > > )* > > - "\}" > > + "\}" > > ; > > =20 > > //*********************************************************************= ******** > > @@ -1714,7 +1723,7 @@ vfrFormDefinition : > ; > > =20 > > vfrFormMapDefinition : > > - << > > + << > > CIfrFormMap *FMapObj =3D NULL; > > UINT32 FormMapMethodNumber =3D 0; > > EFI_GUID Guid; > > @@ -1775,11 +1784,15 @@ vfrStatementDefault : > CIfrNumeric *NumericQst =3D NULL; > > =20 > > >> > > - D:Default > > + D:Default << > > + if (mIsCatchDefa= ultEnable) { > > + DefaultValueEr= ror(VFR_RETURN_UNSUPPORTED, D->getLine()); > > + } > > + >> > > ( > > ( > > - "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, ArrayT= ype] "," > > - << > > + "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, ArrayT= ype] "," > > + << > > if (gCurrentMin= MaxData !=3D NULL && gCurrentMinMaxData->IsNumericOpcode()) { > > //check defau= lt value is valid for Numeric Opcode > > NumericQst = =3D (CIfrNumeric *) gCurrentQuestion; > > @@ -1888,14 +1901,14 @@ vfrStatementDefault : > vfrStatementValue "," << CIfrEnd EndObj1;= EndObj1.SetLineNo(D->getLine()); >> > > ) > > { > > - DefaultStore "=3D" SN:StringIdentifier "," << > > + DefaultStore "=3D" SN:StringIdentifier "," << > > _PCATCH(gCVfrDe= faultStore.GetDefaultId (SN->getText(), &DefaultId), SN); > > if (DObj !=3D N= ULL) { > > - DObj->SetDefau= ltId (DefaultId); > > - } > > + DObj->SetDefau= ltId (DefaultId); > > + } > > =20 > > if (DObj2 !=3D = NULL) { > > - DObj2->SetDefa= ultId (DefaultId); > > + DObj2->SetDefa= ultId (DefaultId); > > } > > >> > > } > > @@ -1917,8 +1930,8 @@ vfrStatementDefault : > ); > > } > > } > > - if (DObj !=3D NU= LL) {delete DObj;} > > - if (DObj2 !=3D NU= LL) {delete DObj2;} > > + if (DObj !=3D NU= LL) {delete DObj;} > > + if (DObj2 !=3D NU= LL) {delete DObj2;} > > >> > > ) > > ; > > @@ -1970,11 +1983,15 @@ vfrStatementInvalid : > ; > > =20 > > flagsField : > > - Number > > - | InteractiveFlag > > - | ManufacturingFlag > > - | DefaultFlag > > - | ResetRequiredFlag > > + Number > > + | InteractiveFlag > > + | ManufacturingFlag > > + | D:DefaultFlag << > > + if (mIsCatchDe= faultEnable) { > > + DefaultValue= Error(VFR_RETURN_UNSUPPORTED, D->getLine()); > > + } > > + >> > > + | ResetRequiredFlag > > | ReconnectRequiredFlag > > | N:NVAccessFlag << > > gCVfrErrorHan= dle.HandleWarning ( > > @@ -1989,7 +2006,7 @@ flagsField : > L->getLine(= ), > > L->getText(= ) > > ); > > - >> > > + >> > > ; > > =20 > > vfrStatementValue : > > @@ -2001,13 +2018,13 @@ vfrStatementValue : > vfrStatementRead : > > << CIfrRead RObj; >> > > R:Read << RObj.SetLineN= o(R->getLine()); >> > > - vfrStatementExpression[0] ";" > > + vfrStatementExpression[0] ";" > > ; > > =20 > > vfrStatementWrite : > > << CIfrWrite WObj; >> > > W:Write << WObj.SetLineN= o(W->getLine()); >> > > - vfrStatementExpression[0] ";" > > + vfrStatementExpression[0] ";" > > ; > > =20 > > vfrStatementSubTitle : > > @@ -2140,7 +2157,7 @@ vfrStatementGoto : > FormId "=3D" F3:Number "," << RefType =3D= 2; FId =3D _STOFID(F3->getText(), F3->getLine()); >> > > Question "=3D" > > ( > > - QN3:StringIdentifier "," << > > + QN3:StringIdentifier "," << > > mCVfrQuestion= DB.GetQuestionId (QN3->getText (), NULL, QId, BitMask); > > if (QId =3D= =3D EFI_QUESTION_ID_INVALID) { > > _PCATCH(VFR= _RETURN_UNDEFINED, QN3); > > @@ -2222,7 +2239,7 @@ vfrStatementGoto : > "," Key "=3D" KN:Number << AssignQuest= ionKey (*QHObj, KN); >> > > } > > { > > - E:"," > > + E:"," > > vfrStatementQuestionOptionList << OHObj->SetSco= pe(1); CRT_END_OP (E);>> > > } > > ";" << if (R1Obj != =3D NULL) {delete R1Obj;} if (R2Obj !=3D NULL) {delete R2Obj;} if (R3Obj != =3D NULL) {delete R3Obj;} if (R4Obj !=3D NULL) {delete R4Obj;} if (R5Obj != =3D NULL) {delete R5Obj;}>> > > @@ -2511,20 +2528,20 @@ minMaxDateStepDefault[EFI_HII_DATE & D, UINT8 Key= Value] : > { > > "default" "=3D" N:Number "," << > > switch (KeyVa= lue) { > > - case 0: > > + case 0: > > D.Year =3D= _STOU16(N->getText(), N->getLine()); > > if (D.Year = < _STOU16 (MinN->getText(), MinN->getLine()) || D.Year > _STOU16 (MaxN->get= Text(), MaxN->getLine())) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default value must be bet= ween Min year and Max year."); > > } > > break; > > - case 1: > > - D.Month =3D = _STOU8(N->getText(), N->getLine()); > > + case 1: > > + D.Month =3D = _STOU8(N->getText(), N->getLine()); > > if (D.Month= < 1 || D.Month > 12) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default value must be be= tween 1 and 12."); > > } > > break; > > - case 2: > > - D.Day =3D _S= TOU8(N->getText(), N->getLine()); > > + case 2: > > + D.Day =3D _S= TOU8(N->getText(), N->getLine()); > > if (D.Day <= 1 || D.Day > 31) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default value must be betw= een 1 and 31."); > > } > > @@ -2570,7 +2587,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : > BOOLEAN MinNegative =3D FALSE; > > BOOLEAN MaxNegative =3D FALSE; > > >> > > - Minimum "=3D" > > + Minimum "=3D" > > { > > "\-" << MinNegative = =3D TRUE; >> > > } > > @@ -2659,8 +2676,8 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : > } > > } > > >> > > - Maximum "=3D" > > - { > > + Maximum "=3D" > > + { > > "\-" << MaxNegative = =3D TRUE; >> > > } > > A:Number "," << > > @@ -2889,7 +2906,7 @@ vfrStatementNumeric : > } > > >> > > vfrStatementQuestionOptionList > > - E:EndNumeric << > > + E:EndNumeric << > > CRT_END_OP (E= ); > > if (GuidObj != =3D NULL) { > > GuidObj->Se= tScope(1); > > @@ -3131,7 +3148,7 @@ vfrStatementString : > { > > Key "=3D" KN:Number "," << AssignQuest= ionKey (SObj, KN); >> > > } > > - MinSize "=3D" MIN:Number "," << > > + MinSize "=3D" MIN:Number "," << > > VarArraySize = =3D _GET_CURRQEST_ARRAY_SIZE(); > > StringMinSize= =3D _STOU8(MIN->getText(), MIN->getLine()); > > if (_STOU64(M= IN->getText(), MIN->getLine()) > StringMinSize) { > > @@ -3141,7 +3158,7 @@ vfrStatementString : > } > > SObj.SetMinSi= ze (StringMinSize); > > >> > > - MaxSize "=3D" MAX:Number "," << > > + MaxSize "=3D" MAX:Number "," << > > StringMaxSize= =3D _STOU8(MAX->getText(), MAX->getLine()); > > if (_STOU64(M= AX->getText(), MAX->getLine()) > StringMaxSize) { > > _PCATCH (VF= R_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize takes only one = byte, which can't be larger than 0xFF."); > > @@ -3185,7 +3202,7 @@ vfrStatementPassword : > { > > Key "=3D" KN:Number "," << AssignQuest= ionKey (PObj, KN); >> > > } > > - MinSize "=3D" MIN:Number "," << > > + MinSize "=3D" MIN:Number "," << > > VarArraySize = =3D _GET_CURRQEST_ARRAY_SIZE(); > > PasswordMinSi= ze =3D _STOU16(MIN->getText(), MIN->getLine()); > > if (_STOU64(M= IN->getText(), MIN->getLine()) > PasswordMinSize) { > > @@ -3195,7 +3212,7 @@ vfrStatementPassword : > } > > PObj.SetMinSi= ze (PasswordMinSize); > > >> > > - MaxSize "=3D" MAX:Number "," << > > + MaxSize "=3D" MAX:Number "," << > > PasswordMaxSi= ze =3D _STOU16(MAX->getText(), MAX->getLine()); > > if (_STOU64(M= AX->getText(), MAX->getLine()) > PasswordMaxSize) { > > _PCATCH (VF= R_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize takes only tw= o byte, which can't be larger than 0xFFFF."); > > @@ -3230,12 +3247,12 @@ vfrStatementOrderedList : > >> > > L:OrderedList << OLObj.SetLine= No(L->getLine()); gIsOrderedList =3D TRUE;>> > > vfrQuestionHeader[OLObj] "," > > - << > > + << > > VarArraySize = =3D _GET_CURRQEST_ARRAY_SIZE(); > > OLObj.SetMaxC= ontainers ((UINT8) (VarArraySize > 0xFF ? 0xFF : VarArraySize)); > > >> > > { > > - MaxContainers "=3D" M:Number "," << > > + MaxContainers "=3D" M:Number "," << > > if (_STOU64(M= ->getText(), M->getLine()) > _STOU8(M->getText(), M->getLine())) { > > _PCATCH (VF= R_RETURN_INVALID_PARAMETER, M->getLine(), "OrderedList MaxContainers takes = only one byte, which can't be larger than 0xFF."); > > } else if (Va= rArraySize !=3D 0 && _STOU8(M->getText(), M->getLine()) > VarArraySize) { > > @@ -3328,19 +3345,19 @@ minMaxTimeStepDefault[EFI_HII_TIME & T, UINT8 Key= Value] : > { > > "default" "=3D" N:Number "," << > > switch (KeyVa= lue) { > > - case 0: > > - T.Hour =3D= _STOU8(N->getText(), N->getLine()); > > + case 0: > > + T.Hour =3D= _STOU8(N->getText(), N->getLine()); > > if (T.Hour = > 23) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Hour default value must be bet= ween 0 and 23."); > > } > > break; > > - case 1: > > - T.Minute =3D= _STOU8(N->getText(), N->getLine()); > > + case 1: > > + T.Minute =3D= _STOU8(N->getText(), N->getLine()); > > if (T.Minut= e > 59) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Minute default value must be b= etween 0 and 59."); > > } > > break; > > - case 2: > > + case 2: > > T.Second = =3D _STOU8(N->getText(), N->getLine()); > > if (T.Secon= d > 59) { > > _PCATCH (= VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Second default value must be b= etween 0 and 59."); > > @@ -3419,11 +3436,11 @@ vfrStatementStatListOld : > ; > > =20 > > vfrStatementDisableIfStat : > > - << > > - CIfrDisableIf DIObj; > > + << > > + CIfrDisableIf DIObj; > > >> > > L:DisableIf << DIObj.SetLine= No(L->getLine()); >> > > - vfrStatementExpression[0] ";" > > + vfrStatementExpression[0] ";" > > ( vfrStatementStatList )* > > E:EndIf << CRT_END_OP (E= ); >> > > ";" > > @@ -3548,8 +3565,8 @@ vfrStatementWarningIf : > ; > > =20 > > vfrStatementDisableIfQuest : > > - << > > - CIfrDisableIf DIObj; > > + << > > + CIfrDisableIf DIObj; > > >> > > L:DisableIf << DIObj.SetLine= No(L->getLine()); >> > > vfrStatementExpression[0] ";" > > @@ -3616,15 +3633,15 @@ vfrStatementOneOfOption : > UINT32 *Type32 =3D (UINT32 *) ValueList; > > UINT64 *Type64 =3D (UINT64 *) ValueList; > > >> > > - L:Option << > > + L:Option << > > if (_GET_CURR= QEST_DATATYPE() =3D=3D EFI_IFR_TYPE_OTHER) { > > _PCATCH (VF= R_RETURN_FATAL_ERROR, L->getLine(), "Get data type error."); > > } > > =20 > > >> > > - Text "=3D" "STRING_TOKEN" "\(" S:Number "\)" "," > > + Text "=3D" "STRING_TOKEN" "\(" S:Number "\)" "," > > Value "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, Arr= ayType] "," > > - << > > + << > > if (gCurrentM= inMaxData !=3D NULL) { > > //set min/m= ax value for oneof opcode > > UINT64 Step= =3D gCurrentMinMaxData->GetStepData(_GET_CURRQEST_DATATYPE(), _GET_CURRQES= T_VARTINFO().mIsBitVar); > > @@ -3696,7 +3713,7 @@ vfrStatementOneOfOption : > Size +=3D OFF= SET_OF (EFI_IFR_ONE_OF_OPTION, Value); > > OOOObj =3D ne= w CIfrOneOfOption((UINT8)Size); > > OOOObj->SetLi= neNo(L->getLine()); > > - OOOObj->SetOpt= ion (_STOSID(S->getText(), S->getLine())); > > + OOOObj->SetOpt= ion (_STOSID(S->getText(), S->getLine())); > > if (ArrayType= ) { > > OOOObj->Set= Type (EFI_IFR_TYPE_BUFFER); > > } else { > > @@ -3706,7 +3723,7 @@ vfrStatementOneOfOption : > OOOObj->S= etType (_GET_CURRQEST_DATATYPE()); > > } > > } > > - OOOObj->SetVal= ue (*Val); > > + OOOObj->SetVal= ue (*Val); > > >> > > F:FLAGS "=3D" vfrOneOfOptionFlags[*OOOObj, F->getLine()] > > << > > @@ -3790,7 +3807,12 @@ oneofoptionFlagsField [UINT8 & HFlags, UINT8 & LFl= ags] : > | RestStyleFlag << $HFlags |=3D = 0x20; >> > > | ReconnectRequiredFlag << $HFlags |=3D = 0x40; >> > > | ManufacturingFlag << $LFlags |=3D = 0x20; >> > > - | DefaultFlag << $LFlags |=3D 0= x10; >> > > + | D:DefaultFlag << > > + $LFlags |=3D 0= x10; > > + if (mIsCatchDe= faultEnable) { > > + DefaultValue= Error(VFR_RETURN_UNSUPPORTED, D->getLine()); > > + } > > + >> > > | A:NVAccessFlag << > > gCVfrErrorHan= dle.HandleWarning ( > > VFR_WARNING= _OBSOLETED_FRAMEWORK_OPCODE, > > @@ -3963,7 +3985,7 @@ vfrStatementExpression [UINT32 RootLevel, UINT32 Ex= pOpCount =3D 0] : > } > > } > > } > > - > > + > > if ($RootLeve= l =3D=3D 0) { > > _CLEAR_SAVE= D_OPHDR (); > > mCIfrOpHdrI= ndex --; > > @@ -4405,10 +4427,10 @@ ideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOp= Count] : > for (Index = =3D 0; Index < ListLen; Index++) { > > EILObj.Se= tValueList (Index, ValueList[Index]); > > } > > - > > + > > EILObj.Upda= teIfrBuffer(); > > - _SAVE_OPHDR_= COND (EILObj, ($ExpOpCount =3D=3D 0), L->getLine()); > > - > > + _SAVE_OPHDR_= COND (EILObj, ($ExpOpCount =3D=3D 0), L->getLine()); > > + > > if (QId =3D= =3D EFI_QUESTION_ID_INVALID) { > > EILObj.Se= tQuestionId (QId, VarIdStr, LineNo); > > } > > @@ -4458,9 +4480,9 @@ stringref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCou= nt] : > >> > > L:StringRef > > "\(" > > - ( > > + ( > > "STRING_TOKEN" > > - "\(" > > + "\(" > > S:Number << RefStringId =3D _STOSID(S->getText(), S->getLine(= )); >> > > "\)" > > | I:Number << RefStringId =3D _STOSID(I->getText(), I->getLine(= )); >> > > @@ -4499,10 +4521,10 @@ getExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : > Info.mVarStoreId =3D 0; > > >> > > L:Get > > - "\(" > > + "\(" > > vfrStorageVarId[Info, VarIdStr, FALSE] > > {"\|" FLAGS "=3D" numericVarStoreType [VarType] } > > - "\)" << > > + "\)" << > > { > > if (Info.mV= arStoreId =3D=3D 0) { > > // suppor= t Date/Time question > > @@ -4549,9 +4571,9 @@ getExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : > _PCATCH= (VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support data a= rray"); > > } > > } > > - CIfrGet GObj= (L->getLine()); > > - _SAVE_OPHDR_= COND (GObj, ($ExpOpCount =3D=3D 0), L->getLine()); > > - GObj.SetVarI= nfo (&Info); > > + CIfrGet GObj= (L->getLine()); > > + _SAVE_OPHDR_= COND (GObj, ($ExpOpCount =3D=3D 0), L->getLine()); > > + GObj.SetVarI= nfo (&Info); > > delete[] Va= rIdStr; > > $ExpOpCount= ++; > > } > > @@ -4608,7 +4630,7 @@ question23refExp[UINT32 & RootLevel, UINT32 & ExpOp= Count] : > { > > Uuid "=3D" guidDefinition[Guid] "," << Ty= pe =3D 0x3; >> > > } > > - vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > "\)" > > << > > switch (Type)= { > > @@ -4675,9 +4697,9 @@ setExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : > "\(" > > vfrStorageVarId[Info, VarIdStr, FALSE] > > {"\|" FLAG "=3D" numericVarStoreType [VarType] } > > - "," vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > + "," vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > "\)" > > - << > > + << > > { > > if (Info.mV= arStoreId =3D=3D 0) { > > // suppor= t Date/Time question > > @@ -4724,8 +4746,8 @@ setExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : > _PCATCH= (VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support data a= rray"); > > } > > } > > - CIfrSet TSOb= j(L->getLine()); > > - TSObj.SetVar= Info (&Info); > > + CIfrSet TSOb= j(L->getLine()); > > + TSObj.SetVar= Info (&Info); > > delete[] Va= rIdStr; > > $ExpOpCount= ++; > > } > > @@ -4808,9 +4830,9 @@ spanExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : > ; > > =20 > > vfrExpressionMap [UINT32 & RootLevel, UINT32 & ExpOpCount]: > > - L:Map > > - "\(" > > - vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > + L:Map > > + "\(" > > + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] > > ":" << { CIfrMap = MObj(L->getLine()); } >> > > ( > > vfrStatementExpression[0] > > @@ -4837,6 +4859,7 @@ spanFlags [UINT8 & Flags] : > class EfiVfrParser { > > << > > private: > > + BOOLEAN mIsCatchDefaultEnable; > > UINT8 mParserStatus; > > BOOLEAN mConstantOnlyInExpression; > > =20 > > @@ -4880,6 +4903,7 @@ public: > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN ANTLRTokenPtr= ); > > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN UINT32); > > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN UINT32, IN CO= NST CHAR8 *); > > + VOID DefaultValueError (IN EFI_VFR_RETURN_CODE, IN UINT= 32); > > =20 > > VOID syn (ANTLRAbstractToken *, ANTLRChar *, SetW= ordType *, ANTLRTokenType, INT32); > > =20 > > @@ -4909,6 +4933,7 @@ public: > VOID IdEqIdDoSpecial (IN UINT32 &, IN UINT32, IN= EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN= UINT32, IN EFI_COMPARE_TYPE); > > VOID IdEqListDoSpecial (IN UINT32 &, IN UINT32, IN= EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN UINT16, IN UINT16 *); > > VOID SetOverrideClassGuid (IN EFI_GUID *); > > + VOID SetIsCatchDefaultEnable (BOOLEAN IsCatchDefaultEna= ble); > > >> > > } > > =20 > > @@ -5086,6 +5111,17 @@ EfiVfrParser::_PCATCH ( > mParserStatus =3D mParserStatus + gCVfrErrorHandle.HandleError (Retur= nCode, LineNum, (CHAR8 *) ErrorMsg); > > } > > =20 > > +VOID > > +EfiVfrParser::DefaultValueError ( > > + IN EFI_VFR_RETURN_CODE ReturnCode, > > + IN UINT32 LineNum > > + ) > > +{ > > + CHAR8 ErrorMsg[100]; > > + sprintf(ErrorMsg, "please remove the default value / defaultstore in l= ine %d", LineNum); > > + mParserStatus =3D mParserStatus + gCVfrErrorHandle.HandleError (Return= Code, LineNum, ErrorMsg); > > +} > > + > > VOID > > EfiVfrParser::syn ( > > ANTLRAbstractToken *Tok, > > @@ -5682,12 +5718,18 @@ EfiVfrParser::IdEqListDoSpecial ( > } > > } > > =20 > > -VOID > > +VOID > > EfiVfrParser::SetOverrideClassGuid (IN EFI_GUID *OverrideClassGuid) > > { > > mOverrideClassGuid =3D OverrideClassGuid; > > } > > =20 > > +VOID > > +EfiVfrParser::SetIsCatchDefaultEnable (BOOLEAN IsCatchDefaultEnable) > > +{ > > + mIsCatchDefaultEnable =3D IsCatchDefaultEnable; > > +} > > + > > VOID > > EfiVfrParser::CheckDuplicateDefaultValue ( > > IN EFI_DEFAULT_ID DefaultId, > -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112775): https://edk2.groups.io/g/devel/message/112775 Mute This Topic: https://groups.io/mt/103129296/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-