From: "Yuting Yang" <yuting2.yang@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
gaoliming <gaoliming@byosoft.com.cn>
Cc: "Chen, Christine" <yuwei.chen@intel.com>,
"Zhang, Zifeng" <zifeng.zhang@intel.com>,
"Feng, Bob C" <bob.c.feng@intel.com>,
"He, Haiyang" <haiyang.he@intel.com>
Subject: Re: [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds DefaultValueError
Date: Thu, 21 Mar 2024 07:54:20 +0000 [thread overview]
Message-ID: <DS7PR11MB788563382AD55EE67C5FE17DDA322@DS7PR11MB7885.namprd11.prod.outlook.com> (raw)
In-Reply-To: <17BEB716C0DD8A75.2828@groups.io>
Hi liming,
Gentle reminder, we have removed the whitespace. Please help review the patch~
Thanks,
Yuting
-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yuting Yang
Sent: Thursday, March 21, 2024 3:30 PM
To: devel@edk2.groups.io
Cc: Rebecca Cran <rebecca@bsdio.com>; Liming Gao <gaoliming@byosoft.com.cn>; Feng, Bob C <bob.c.feng@intel.com>; Chen, Christine <yuwei.chen@intel.com>; Zhang, Zifeng <zifeng.zhang@intel.com>
Subject: [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds DefaultValueError
Add --catch_default option
Raise a DefaultValueError when encountering VFR default definitions to help remove default variables.
Signed-off-by: Yuting Yang <yuting2.yang@intel.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Christine Chen <yuwei.chen@intel.com>
Cc: Zifeng Zhang <zifeng.zhang@intel.com>
---
BaseTools/Source/C/VfrCompile/VfrCompiler.cpp | 8 ++++----
BaseTools/Source/C/VfrCompile/VfrCompiler.h | 1 +
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 | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
6 files changed, 60 insertions(+), 14 deletions(-)
diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp b/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp
index 5f4d262d85..4031af6e39 100644
--- a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp
+++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp
@@ -78,6 +78,7 @@ CVfrCompiler::OptionInitialization (
mOptions.WarningAsError = FALSE; mOptions.AutoDefault = FALSE; mOptions.CheckDefault = FALSE;+ mOptions.IsCatchDefaultEnable = FALSE; memset (&mOptions.OverrideClassGuid, 0, sizeof (EFI_GUID)); if (Argc == 1) {@@ -95,6 +96,8 @@ CVfrCompiler::OptionInitialization (
Version (); SET_RUN_STATUS (STATUS_DEAD); return;+ } else if (stricmp(Argv[Index], "--catch_default") == 0){+ mOptions.IsCatchDefaultEnable = TRUE; } else if (stricmp(Argv[Index], "-l") == 0) { mOptions.CreateRecordListFile = TRUE; gCIfrRecordInfoDB.TurnOn ();@@ -179,7 +182,6 @@ CVfrCompiler::OptionInitialization (
goto Fail; } strcpy (mOptions.VfrFileName, Argv[Index]);- if (mOptions.OutputDirectory == NULL) { mOptions.OutputDirectory = (CHAR8 *) malloc (1); if (mOptions.OutputDirectory == NULL) {@@ -679,7 +681,7 @@ CVfrCompiler::Compile (
DebugError (NULL, 0, 0001, "Error opening the input file", "%s", InFileName); goto Fail; }-+ InputInfo.IsCatchDefaultEnable = mOptions.IsCatchDefaultEnable; if (mOptions.HasOverrideClassGuid) { InputInfo.OverrideClassGuid = &mOptions.OverrideClassGuid; } else {@@ -937,5 +939,3 @@ main (
return GetUtilityStatus (); }--diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.h b/BaseTools/Source/C/VfrCompile/VfrCompiler.h
index b6e207d2ce..974f37c4eb 100644
--- a/BaseTools/Source/C/VfrCompile/VfrCompiler.h
+++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.h
@@ -52,6 +52,7 @@ typedef struct {
BOOLEAN WarningAsError; BOOLEAN AutoDefault; BOOLEAN CheckDefault;+ BOOLEAN IsCatchDefaultEnable; } OPTIONS; typedef enum {diff --git a/BaseTools/Source/C/VfrCompile/VfrError.cpp b/BaseTools/Source/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 [] = {
{ VFR_WARNING_DEFAULT_VALUE_REDEFINED, ": default value re-defined with different value"}, { VFR_WARNING_ACTION_WITH_TEXT_TWO, ": Action opcode should not have TextTwo part"}, { VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, ": Not recommend to use obsoleted framework opcode"},- { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" }+ { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" },+ { VFR_WARNING_UNSUPPORTED, ": pls remove the default values if necessary" } }; 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 = 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; typedef struct _SVFR_ERROR_HANDLE {diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h b/BaseTools/Source/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 {
typedef struct { EFI_GUID *OverrideClassGuid;+ BOOLEAN IsCatchDefaultEnable; } INPUT_INFO_TO_SYNTAX; class CFormPkg {diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
index 55fd067f8a..d7376122d8 100644
--- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g
+++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g
@@ -50,6 +50,7 @@ VfrParserStart (
{ ParserBlackBox<CVfrDLGLexer, EfiVfrParser, ANTLRToken> VfrParser(File); VfrParser.parser()->SetOverrideClassGuid (InputInfo->OverrideClassGuid);+ VfrParser.parser()->SetIsCatchDefaultEnable(InputInfo->IsCatchDefaultEnable); return VfrParser.parser()->vfrProgram(); } >>@@ -975,7 +976,15 @@ vfrExtensionData[UINT8 *DataBuff, UINT32 Size, CHAR8 *TypeName, UINT32 TypeSize,
vfrStatementDefaultStore : << UINT16 DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD; >>- D:DefaultStore N:StringIdentifier ","+ D:DefaultStore N:StringIdentifier "," <<+ if (mIsCatchDefaultEnable) {+ gCVfrErrorHandle.HandleWarning (+ VFR_WARNING_UNSUPPORTED,+ D->getLine(),+ D->getText()+ );+ }+ >> Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" { "," Attribute "=" A:Number << DefaultId = _STOU16(A->getText(), A->getLine()); >>@@ -1775,7 +1784,11 @@ vfrStatementDefault :
CIfrNumeric *NumericQst = NULL; >>- D:Default + D:Default <<+ if (mIsCatchDefaultEnable) {+ DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine());+ }+ >> ( ( "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, ArrayType] "," @@ -1970,11 +1983,15 @@ vfrStatementInvalid :
; flagsField :- Number - | InteractiveFlag - | ManufacturingFlag - | DefaultFlag - | ResetRequiredFlag + Number+ | InteractiveFlag+ | ManufacturingFlag+ | D:DefaultFlag <<+ if (mIsCatchDefaultEnable) {+ DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine());+ }+ >>+ | ResetRequiredFlag | ReconnectRequiredFlag | N:NVAccessFlag << gCVfrErrorHandle.HandleWarning (@@ -3790,7 +3807,12 @@ oneofoptionFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
| RestStyleFlag << $HFlags |= 0x20; >> | ReconnectRequiredFlag << $HFlags |= 0x40; >> | ManufacturingFlag << $LFlags |= 0x20; >>- | DefaultFlag << $LFlags |= 0x10; >>+ | D:DefaultFlag <<+ $LFlags |= 0x10;+ if (mIsCatchDefaultEnable) {+ DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine());+ }+ >> | A:NVAccessFlag << gCVfrErrorHandle.HandleWarning ( VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,@@ -4837,6 +4859,7 @@ spanFlags [UINT8 & Flags] :
class EfiVfrParser { << private:+ BOOLEAN mIsCatchDefaultEnable; UINT8 mParserStatus; BOOLEAN mConstantOnlyInExpression; @@ -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 CONST CHAR8 *);+ VOID DefaultValueError (IN EFI_VFR_RETURN_CODE, IN UINT32); VOID syn (ANTLRAbstractToken *, ANTLRChar *, SetWordType *, ANTLRTokenType, INT32); @@ -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 IsCatchDefaultEnable); >> } @@ -5086,6 +5111,17 @@ EfiVfrParser::_PCATCH (
mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode, LineNum, (CHAR8 *) ErrorMsg); } +VOID+EfiVfrParser::DefaultValueError (+ IN EFI_VFR_RETURN_CODE ReturnCode,+ IN UINT32 LineNum+ )+{+ CHAR8 ErrorMsg[100];+ sprintf(ErrorMsg, "please remove the default value / defaultstore in line %d", LineNum);+ mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode, LineNum, ErrorMsg);+}+ VOID EfiVfrParser::syn ( ANTLRAbstractToken *Tok,@@ -5688,6 +5724,12 @@ EfiVfrParser::SetOverrideClassGuid (IN EFI_GUID *OverrideClassGuid)
mOverrideClassGuid = OverrideClassGuid; } +VOID+EfiVfrParser::SetIsCatchDefaultEnable (BOOLEAN IsCatchDefaultEnable)+{+ mIsCatchDefaultEnable = IsCatchDefaultEnable;+}+ VOID EfiVfrParser::CheckDuplicateDefaultValue ( IN EFI_DEFAULT_ID DefaultId,--
2.39.1.windows.1
-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116948): https://edk2.groups.io/g/devel/message/116948
Mute This Topic: https://groups.io/mt/105061128/7976666
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [yuting2.yang@intel.com] -=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116949): https://edk2.groups.io/g/devel/message/116949
Mute This Topic: https://groups.io/mt/105061128/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next parent reply other threads:[~2024-03-21 7:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <17BEB716C0DD8A75.2828@groups.io>
2024-03-21 7:54 ` Yuting Yang [this message]
2024-03-28 7:28 ` [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds DefaultValueError Zhang, Zifeng
2024-04-02 1:09 ` 回复: " gaoliming via groups.io
2024-03-21 7:30 Yuting Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DS7PR11MB788563382AD55EE67C5FE17DDA322@DS7PR11MB7885.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox