From: "gaoliming via groups.io" <gaoliming=byosoft.com.cn@groups.io>
To: <devel@edk2.groups.io>, <zifeng.zhang@intel.com>,
"'Yang, Yuting2'" <yuting2.yang@intel.com>
Cc: "'Chen, Christine'" <yuwei.chen@intel.com>,
"'Feng, Bob C'" <bob.c.feng@intel.com>,
"'He, Haiyang'" <haiyang.he@intel.com>
Subject: 回复: [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds DefaultValueError
Date: Tue, 2 Apr 2024 09:09:06 +0800 [thread overview]
Message-ID: <017701da849a$5c472f50$14d58df0$@byosoft.com.cn> (raw)
In-Reply-To: <SN6PR11MB2815002DD06908B954990BE9823B2@SN6PR11MB2815.namprd11.prod.outlook.com>
Zifang and Yuting:
The change looks good. But, there are two ways for error report. One is
gCVfrErrorHandle.HandleWarning, another is DefaultValueError. Can we always
use gCVfrErrorHandle.HandleWarning?
Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Zhang, Zifeng
> 发送时间: 2024年3月28日 15:29
> 收件人: Yang, Yuting2 <yuting2.yang@intel.com>; devel@edk2.groups.io;
> gaoliming <gaoliming@byosoft.com.cn>
> 抄送: Chen, Christine <yuwei.chen@intel.com>; Feng, Bob C
> <bob.c.feng@intel.com>; He, Haiyang <haiyang.he@intel.com>
> 主题: Re: [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds
> DefaultValueError
>
> Thanks Yuting for patch update!
>
> Hi @gaoliming,
> Would you like to review the V4 patch?
> Hope to merge it asap to avoid blocking feature complete.
>
> Best Regards,
> Zifeng
>
> -----Original Message-----
> From: Yang, Yuting2 <yuting2.yang@intel.com>
> Sent: Thursday, March 21, 2024 3:54 PM
> To: 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
>
> 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 (#117300): https://edk2.groups.io/g/devel/message/117300
Mute This Topic: https://groups.io/mt/105279854/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
prev parent reply other threads:[~2024-04-02 1:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <17BEB716C0DD8A75.2828@groups.io>
2024-03-21 7:54 ` [edk2-devel] [Patch V4] BaseTools: VfrCompiler Adds DefaultValueError Yuting Yang
2024-03-28 7:28 ` Zhang, Zifeng
2024-04-02 1:09 ` gaoliming via groups.io [this message]
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='017701da849a$5c472f50$14d58df0$@byosoft.com.cn' \
--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