* [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION @ 2019-07-03 8:21 Xiaoyu Lu 2019-07-05 4:58 ` Liming Gao 0 siblings, 1 reply; 5+ messages in thread From: Xiaoyu Lu @ 2019-07-03 8:21 UTC (permalink / raw) To: devel; +Cc: Xiaoyu Lu, Liming Gao, Jiewen Yao BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1952 Background: Host-based Firmware Analyzer (HBFA) is a opensouce tools enables advanced testing of UEFI and UEFI PI drivers in developer's OS environment. It will generate OS application which can run directly in OS environment. But there is no explicit MODULE_TYPE to indicate those modules. Difference: USER_DEFINED can be anyting, exe, bin, acpi table, etc. HOST_APPLICATION identify it is exe file. Add HOST_APPLICATION module type so it's easier to identify. Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> --- 1_introduction/12_terms.md | 4 ++-- 2_inf_overview/215_[depex]_section.md | 2 +- 2_inf_overview/26_[buildoptions]_section.md | 2 +- 3_edk_ii_inf_file_format/314_[depex]_sections.md | 6 +++--- 3_edk_ii_inf_file_format/32_component_inf_definition.md | 4 +++- 3_edk_ii_inf_file_format/34_[defines]_section.md | 6 ++++-- README.md | 3 ++- appendix_f_module_types.md | 1 + 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/1_introduction/12_terms.md b/1_introduction/12_terms.md index 14827fd..ba96813 100644 --- a/1_introduction/12_terms.md +++ b/1_introduction/12_terms.md @@ -232,8 +232,8 @@ with a similar set of requirements. A module that is of module type `BASE`, depends only on headers and libraries provided in the MDE, while a module that is of module type DXE_DRIVER depends on common DXE components. For a definition of the various module types, see module type. The EDK II build system also -permits modules of type `USER_DEFINED`. These modules will not be processed by -the EDK II Build system. +permits modules of type `USER_DEFINED` and `HOST_APPLICATION`. These modules +will not be processed by the EDK II Build system. **Package** diff --git a/2_inf_overview/215_[depex]_section.md b/2_inf_overview/215_[depex]_section.md index 912228f..e144d08 100644 --- a/2_inf_overview/215_[depex]_section.md +++ b/2_inf_overview/215_[depex]_section.md @@ -65,7 +65,7 @@ Additionally, the rules for specifying DEPEX sections are as follows. [Depex.IA32]) are not permitted. It is permitted to have a Depex section if one ModuleType modifier is specified (i.e., [Depex.common.PEIM). -* If the ModuleType is `USER_DEFINED`, then a `[Depex]` section is optional. If +* If the ModuleType is `USER_DEFINED` or `HOST_APPLICATION`, then a `[Depex]` section is optional. If a PEI, SMM or DXE DEPEX section is required, the user must specify a ModuleType of `PEIM` to generate a `PEI_DEPEX` section, a ModuleType of `DXE_DRIVER` to generate a `DXE_DEPEX` section, or a ModuleType of diff --git a/2_inf_overview/26_[buildoptions]_section.md b/2_inf_overview/26_[buildoptions]_section.md index 667d8d9..5e9059c 100644 --- a/2_inf_overview/26_[buildoptions]_section.md +++ b/2_inf_overview/26_[buildoptions]_section.md @@ -74,7 +74,7 @@ shown above. | `TAGNAME` | YES | Yes = * | `Conf/tools_def.txt` file defines several different tag names - these are defined by developers; the default tag name, `MYTOOLS`, is provided in the template for tools_def.txt and set in the `Conf/target.txt` file. | | `ARCH` | YES | Yes = * | `Conf/tools_def.txt` defines at least four architectures: `IA32`, `X64` and `EBC`. This tag must use all capital letters for the tag. Additional Architectures, such as PPC or ARM may be added as support becomes available. | | `TOOLCODE` | YES | NO | The tool code must be one of the defined tool codes in the `Conf/tools_def.txt` file. The flags defined in this section are appended to flags defined in the `tools_def.txt` file for individual tools. | -| | | | EXCEPTION: If the INF `MODULE_TYPE`, defined in the `[Defines]` section is `USER_DEFINED`, then the flags listed in this section are the only flags used for the TOOLCODE command specified in `Conf/ tools_def.txt`. | +| | | | EXCEPTION: If the INF `MODULE_TYPE`, defined in the `[Defines]` section is `USER_DEFINED` or `HOST_APPLICATION`, then the flags listed in this section are the only flags used for the TOOLCODE command specified in `Conf/ tools_def.txt`. | | `ATTRIBUTE` | YES | NO | The attribute must be specific to the tool code and must be a valid attribute handled by the build system. | Developers should use extreme caution when specifying items in this section. diff --git a/3_edk_ii_inf_file_format/314_[depex]_sections.md b/3_edk_ii_inf_file_format/314_[depex]_sections.md index 02d5bb4..de307a2 100644 --- a/3_edk_ii_inf_file_format/314_[depex]_sections.md +++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md @@ -84,9 +84,9 @@ of a new section or the end of file. Drivers with `MODULE_TYPE` set to `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE`, `UEFI_DRIVER` and `UEFI_APPLICATION` cannot have `[Depex]` sections. Libraries -and modules that are `USER_DEFINED` may have a `[Depex]` section. All remaining -drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, `DXE_RUNTIME_DRIVER` and -`DXE_SMM_DRIVER` module types must have a `[Depex]` section. +and modules that are `USER_DEFINED` or `HOST_APPLICATION` may have a `[Depex]` +section. All remaining drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, +`DXE_RUNTIME_DRIVER` and `DXE_SMM_DRIVER` module types must have a `[Depex]` section. Libraries of type `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE and` `UEFI_APPLICATION` are not allowed to have a `[Depex]`. The `MODULE_TYPE` entry diff --git a/3_edk_ii_inf_file_format/32_component_inf_definition.md b/3_edk_ii_inf_file_format/32_component_inf_definition.md index b80218b..164771c 100644 --- a/3_edk_ii_inf_file_format/32_component_inf_definition.md +++ b/3_edk_ii_inf_file_format/32_component_inf_definition.md @@ -62,7 +62,8 @@ EBNF). if (LIBRARY_CLASS is declared in Defines Section): <Depex>* elif (MODULE_TYPE == "USER_DEFINED" - || MODULE_TYPE == "UEFI_DRIVER"): + || MODULE_TYPE == "UEFI_DRIVER" + || MODULE_TYPE == "HOST_APPLICATION"): <Depex>* elif (MODULE_TYPE == "PEIM" || MODULE_TYPE == "DXE_DRIVER" @@ -257,6 +258,7 @@ The following are common definitions used by multiple section types. {"DXE_RUNTIME_DRIVER"} {"DXE_SAL_DRIVER"} {"DXE_SMM_DRIVER"} {"UEFI_DRIVER"} {"UEFI_APPLICATION"} {"USER_DEFINED"} + {"HOST_APPLICATION"} <ModuleTypeList> ::= <ModuleType> [" " <ModuleType>]* <IdentifierName> ::= <TS> {<MACROVAL>} {<PcdName>} <TS> <Boolean> ::= {<BoolType>} {<Expression>} diff --git a/3_edk_ii_inf_file_format/34_[defines]_section.md b/3_edk_ii_inf_file_format/34_[defines]_section.md index 69be2b0..78ac58d 100644 --- a/3_edk_ii_inf_file_format/34_[defines]_section.md +++ b/3_edk_ii_inf_file_format/34_[defines]_section.md @@ -191,8 +191,10 @@ the `MODULE_UNI_FILE` entry must be a Unicode file with an extension of .uni, Drivers and applications are not allowed to have a `MODULE_TYPE` of `"BASE`". Only libraries are permitted to a have a `MODULE_TYPE` of `"BASE`". A INF file can be used to specify other binary files types, such as logo images or -legacy16 option ROMs. The `USER_DEFINED` module type must be used in all cases -where the module type is not a member of `<Edk2ModuleType>`. +legacy16 option ROMs. `HOST_APPLICATION` module should be used to sepcify host +application that can run in OS environment directly. The `USER_DEFINED` module type +must be used in all cases where the module type is not a member of +`<Edk2ModuleType>`. **_INF_VERSION_** diff --git a/README.md b/README.md index 6819441..60fba19 100644 --- a/README.md +++ b/README.md @@ -201,4 +201,5 @@ Copyright (c) 2007-2017, Intel Corporation. All rights reserved. | | Add clarification that !error statement is not permitted in INF file | | | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] section | | | | [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=1162) Correct the item in Table 1 to align with 3.4 section | | -| 1.28 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) Update INF spec to remove EDK related contents | Mar 2019 | \ No newline at end of file +| 1.28 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) Update INF spec to remove EDK related contents | Mar 2019 | +| 1.29 | [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=1952) Add new MODULE_TYPE HOST_APPLICATION | July 2019 | diff --git a/appendix_f_module_types.md b/appendix_f_module_types.md index 7082332..f7c2200 100644 --- a/appendix_f_module_types.md +++ b/appendix_f_module_types.md @@ -57,6 +57,7 @@ | UEFI_DRIVER | UEFI_DRIVER | .efi | This module type is used by UEFI Drivers that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. These modules provide services in the boot services execution environment. UEFI Drivers that return EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an error are unloaded from memory. | | UEFI_APPLICATION | UEFI_APPLICATION | .efi | This module type is used by UEFI Applications that are compliant with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI Applications are always unloaded when they exit. | | USER_DEFINED | USER_DEFINED | .bin or .rom | User defined extension | +| HOST_APPLICATION | HOST_APPLICATION | .exe or NULL | This module type is for building applications which can run in host OS directly. | | EFI Dependency Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .dpx | This is the compiled dependency section for SMM, PEIM or DXE modules. A dependency section may also be generated from a dependency source (.dxs) file, if specified in the `[Sources]` section. | | EFI User Interface Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .ui | This is a processed User Interface section | | EFI Version Section | Any - the code for these sections is included as part of any module, and no separate INF is required. | .ver | This is a processed Version section | -- 2.17.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION 2019-07-03 8:21 [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION Xiaoyu Lu @ 2019-07-05 4:58 ` Liming Gao 2019-07-05 5:02 ` Yao, Jiewen 0 siblings, 1 reply; 5+ messages in thread From: Liming Gao @ 2019-07-05 4:58 UTC (permalink / raw) To: Lu, XiaoyuX, devel@edk2.groups.io; +Cc: Yao, Jiewen Xiaoyu: I would like to clarify that HOST_APPLICATION is for the execute file that can run in OS environment directly. It may be exe for Windows or be ELF for Linux. And, this new type module will directly run in OS environment. So, they will not be built into BIOS image, and not be dispatched by PeiCore, DxeCore and SmmCore. Right? If yes, they don't need [Depex] section. Last, can this new type be applied for EmulatorPkg\Win\Host and EmulatorPkg\Unix\Host module? Thanks Liming >-----Original Message----- >From: Lu, XiaoyuX >Sent: Wednesday, July 03, 2019 4:22 PM >To: devel@edk2.groups.io >Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Gao, Liming <liming.gao@intel.com>; >Yao, Jiewen <jiewen.yao@intel.com> >Subject: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE >HOST_APPLICATION > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1952 > >Background: >Host-based Firmware Analyzer (HBFA) is a opensouce tools enables advanced >testing of UEFI and UEFI PI drivers in developer's OS environment. It >will generate OS application which can run directly in OS environment. But >there is no explicit MODULE_TYPE to indicate those modules. > >Difference: >USER_DEFINED can be anyting, exe, bin, acpi table, etc. >HOST_APPLICATION identify it is exe file. > >Add HOST_APPLICATION module type so it's easier to identify. > >Cc: Liming Gao <liming.gao@intel.com> >Cc: Jiewen Yao <jiewen.yao@intel.com> >Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> >--- > 1_introduction/12_terms.md | 4 ++-- > 2_inf_overview/215_[depex]_section.md | 2 +- > 2_inf_overview/26_[buildoptions]_section.md | 2 +- > 3_edk_ii_inf_file_format/314_[depex]_sections.md | 6 +++--- > 3_edk_ii_inf_file_format/32_component_inf_definition.md | 4 +++- > 3_edk_ii_inf_file_format/34_[defines]_section.md | 6 ++++-- > README.md | 3 ++- > appendix_f_module_types.md | 1 + > 8 files changed, 17 insertions(+), 11 deletions(-) > >diff --git a/1_introduction/12_terms.md b/1_introduction/12_terms.md >index 14827fd..ba96813 100644 >--- a/1_introduction/12_terms.md >+++ b/1_introduction/12_terms.md >@@ -232,8 +232,8 @@ with a similar set of requirements. A module that is of >module type `BASE`, > depends only on headers and libraries provided in the MDE, while a module >that > is of module type DXE_DRIVER depends on common DXE components. For a >definition > of the various module types, see module type. The EDK II build system also >-permits modules of type `USER_DEFINED`. These modules will not be >processed by >-the EDK II Build system. >+permits modules of type `USER_DEFINED` and `HOST_APPLICATION`. These >modules >+will not be processed by the EDK II Build system. > > **Package** > >diff --git a/2_inf_overview/215_[depex]_section.md >b/2_inf_overview/215_[depex]_section.md >index 912228f..e144d08 100644 >--- a/2_inf_overview/215_[depex]_section.md >+++ b/2_inf_overview/215_[depex]_section.md >@@ -65,7 +65,7 @@ Additionally, the rules for specifying DEPEX sections are >as follows. > [Depex.IA32]) are not permitted. It is permitted to have a Depex section if > one ModuleType modifier is specified (i.e., [Depex.common.PEIM). > >-* If the ModuleType is `USER_DEFINED`, then a `[Depex]` section is optional. >If >+* If the ModuleType is `USER_DEFINED` or `HOST_APPLICATION`, then a >`[Depex]` section is optional. If > a PEI, SMM or DXE DEPEX section is required, the user must specify a > ModuleType of `PEIM` to generate a `PEI_DEPEX` section, a ModuleType of > `DXE_DRIVER` to generate a `DXE_DEPEX` section, or a ModuleType of >diff --git a/2_inf_overview/26_[buildoptions]_section.md >b/2_inf_overview/26_[buildoptions]_section.md >index 667d8d9..5e9059c 100644 >--- a/2_inf_overview/26_[buildoptions]_section.md >+++ b/2_inf_overview/26_[buildoptions]_section.md >@@ -74,7 +74,7 @@ shown above. > | `TAGNAME` | YES | Yes = * | `Conf/tools_def.txt` file defines several >different tag names - these are defined by developers; the default tag name, >`MYTOOLS`, is provided in the template for tools_def.txt and set in the >`Conf/target.txt` file. | > | `ARCH` | YES | Yes = * | `Conf/tools_def.txt` defines at least four >architectures: `IA32`, `X64` and `EBC`. This tag must use all capital letters for >the tag. Additional Architectures, such as PPC or ARM may be added as >support becomes available. | > | `TOOLCODE` | YES | NO | The tool code must be one of the defined >tool codes in the `Conf/tools_def.txt` file. The flags defined in this section are >appended to flags defined in the `tools_def.txt` file for individual tools. >| >-| | | | EXCEPTION: If the INF `MODULE_TYPE`, defined in the >`[Defines]` section is `USER_DEFINED`, then the flags listed in this section are >the only flags used for the TOOLCODE command specified in `Conf/ >tools_def.txt`. | >+| | | | EXCEPTION: If the INF `MODULE_TYPE`, defined in >the `[Defines]` section is `USER_DEFINED` or `HOST_APPLICATION`, then the >flags listed in this section are the only flags used for the TOOLCODE command >specified in `Conf/ tools_def.txt`. | > | `ATTRIBUTE` | YES | NO | The attribute must be specific to the tool >code and must be a valid attribute handled by the build system. >| > > Developers should use extreme caution when specifying items in this section. >diff --git a/3_edk_ii_inf_file_format/314_[depex]_sections.md >b/3_edk_ii_inf_file_format/314_[depex]_sections.md >index 02d5bb4..de307a2 100644 >--- a/3_edk_ii_inf_file_format/314_[depex]_sections.md >+++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md >@@ -84,9 +84,9 @@ of a new section or the end of file. > > Drivers with `MODULE_TYPE` set to `SEC`, `PEI_CORE`, `DXE_CORE`, >`SMM_CORE`, > `UEFI_DRIVER` and `UEFI_APPLICATION` cannot have `[Depex]` sections. >Libraries >-and modules that are `USER_DEFINED` may have a `[Depex]` section. All >remaining >-drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, `DXE_RUNTIME_DRIVER` >and >-`DXE_SMM_DRIVER` module types must have a `[Depex]` section. >+and modules that are `USER_DEFINED` or `HOST_APPLICATION` may have a >`[Depex]` >+section. All remaining drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, >+`DXE_RUNTIME_DRIVER` and `DXE_SMM_DRIVER` module types must have >a `[Depex]` section. > > Libraries of type `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE and` > `UEFI_APPLICATION` are not allowed to have a `[Depex]`. The >`MODULE_TYPE` entry >diff --git a/3_edk_ii_inf_file_format/32_component_inf_definition.md >b/3_edk_ii_inf_file_format/32_component_inf_definition.md >index b80218b..164771c 100644 >--- a/3_edk_ii_inf_file_format/32_component_inf_definition.md >+++ b/3_edk_ii_inf_file_format/32_component_inf_definition.md >@@ -62,7 +62,8 @@ EBNF). > if (LIBRARY_CLASS is declared in Defines Section): > <Depex>* > elif (MODULE_TYPE == "USER_DEFINED" >- || MODULE_TYPE == "UEFI_DRIVER"): >+ || MODULE_TYPE == "UEFI_DRIVER" >+ || MODULE_TYPE == "HOST_APPLICATION"): > <Depex>* > elif (MODULE_TYPE == "PEIM" > || MODULE_TYPE == "DXE_DRIVER" >@@ -257,6 +258,7 @@ The following are common definitions used by multiple >section types. > {"DXE_RUNTIME_DRIVER"} {"DXE_SAL_DRIVER"} > {"DXE_SMM_DRIVER"} {"UEFI_DRIVER"} > {"UEFI_APPLICATION"} {"USER_DEFINED"} >+ {"HOST_APPLICATION"} > <ModuleTypeList> ::= <ModuleType> [" " <ModuleType>]* > <IdentifierName> ::= <TS> {<MACROVAL>} {<PcdName>} <TS> > <Boolean> ::= {<BoolType>} {<Expression>} >diff --git a/3_edk_ii_inf_file_format/34_[defines]_section.md >b/3_edk_ii_inf_file_format/34_[defines]_section.md >index 69be2b0..78ac58d 100644 >--- a/3_edk_ii_inf_file_format/34_[defines]_section.md >+++ b/3_edk_ii_inf_file_format/34_[defines]_section.md >@@ -191,8 +191,10 @@ the `MODULE_UNI_FILE` entry must be a Unicode file >with an extension of .uni, > Drivers and applications are not allowed to have a `MODULE_TYPE` of >`"BASE`". > Only libraries are permitted to a have a `MODULE_TYPE` of `"BASE`". A INF file > can be used to specify other binary files types, such as logo images or >-legacy16 option ROMs. The `USER_DEFINED` module type must be used in all >cases >-where the module type is not a member of `<Edk2ModuleType>`. >+legacy16 option ROMs. `HOST_APPLICATION` module should be used to >sepcify host >+application that can run in OS environment directly. The `USER_DEFINED` >module type >+must be used in all cases where the module type is not a member of >+`<Edk2ModuleType>`. > > **_INF_VERSION_** > >diff --git a/README.md b/README.md >index 6819441..60fba19 100644 >--- a/README.md >+++ b/README.md >@@ -201,4 +201,5 @@ Copyright (c) 2007-2017, Intel Corporation. All rights >reserved. > | | Add clarification that !error statement is not permitted in INF file >| | > | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] section >| | > | | [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=1162) >Correct the item in Table 1 to align with 3.4 section >| | >-| 1.28 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) >Update INF spec to remove EDK related contents >| Mar 2019 | >\ No newline at end of file >+| 1.28 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) >Update INF spec to remove EDK related contents >| Mar 2019 | >+| 1.29 | [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=1952) >Add new MODULE_TYPE HOST_APPLICATION >| July 2019 | >diff --git a/appendix_f_module_types.md b/appendix_f_module_types.md >index 7082332..f7c2200 100644 >--- a/appendix_f_module_types.md >+++ b/appendix_f_module_types.md >@@ -57,6 +57,7 @@ > | UEFI_DRIVER | UEFI_DRIVER >| .efi | This module type is used by UEFI Drivers that are compliant with >the EFI 1.10 Specification or the UEFI 2.x Specification. These modules provide >services in the boot services execution environment. UEFI Drivers that return >EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an >error are unloaded from memory. >| > | UEFI_APPLICATION | UEFI_APPLICATION >| .efi | This module type is used by UEFI Applications that are compliant >with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI Applications >are always unloaded when they exit. >| > | USER_DEFINED | USER_DEFINED >| .bin or .rom | User defined extension >| >+| HOST_APPLICATION | HOST_APPLICATION >| .exe or NULL | This module type is for building applications which can run >in host OS directly. >| > | EFI Dependency Section | Any - the code for these sections is included as >part of any module, and no separate INF is required. >| .dpx | This is the compiled dependency section for SMM, PEIM or DXE >modules. A dependency section may also be generated from a dependency >source (.dxs) file, if specified in the `[Sources]` section. >| > | EFI User Interface Section | Any - the code for these sections is included as >part of any module, and no separate INF is required. >| .ui | This is a processed User Interface section >| > | EFI Version Section | Any - the code for these sections is included as part >of any module, and no separate INF is required. >| .ver | This is a processed Version section | >-- >2.17.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION 2019-07-05 4:58 ` Liming Gao @ 2019-07-05 5:02 ` Yao, Jiewen 2019-07-05 5:53 ` Liming Gao 0 siblings, 1 reply; 5+ messages in thread From: Yao, Jiewen @ 2019-07-05 5:02 UTC (permalink / raw) To: Gao, Liming, Lu, XiaoyuX, devel@edk2.groups.io Answer below: > -----Original Message----- > From: Gao, Liming > Sent: Friday, July 5, 2019 12:59 PM > To: Lu, XiaoyuX <xiaoyux.lu@intel.com>; devel@edk2.groups.io > Cc: Yao, Jiewen <jiewen.yao@intel.com> > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new > MODULE_TYPE HOST_APPLICATION > > Xiaoyu: > I would like to clarify that HOST_APPLICATION is for the execute file that > can run in OS environment directly. It may be exe for Windows or be ELF for > Linux. [Jiewen] That is correct. > And, this new type module will directly run in OS environment. So, they will > not be built into BIOS image, and not be dispatched by PeiCore, DxeCore and > SmmCore. Right? If yes, they don't need [Depex] section. [Jiewen] That is correct. > > Last, can this new type be applied for EmulatorPkg\Win\Host and > EmulatorPkg\Unix\Host module? [Jiewen] Yes. > > Thanks > Liming > >-----Original Message----- > >From: Lu, XiaoyuX > >Sent: Wednesday, July 03, 2019 4:22 PM > >To: devel@edk2.groups.io > >Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Gao, Liming > <liming.gao@intel.com>; > >Yao, Jiewen <jiewen.yao@intel.com> > >Subject: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE > >HOST_APPLICATION > > > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1952 > > > >Background: > >Host-based Firmware Analyzer (HBFA) is a opensouce tools enables > advanced > >testing of UEFI and UEFI PI drivers in developer's OS environment. It > >will generate OS application which can run directly in OS environment. But > >there is no explicit MODULE_TYPE to indicate those modules. > > > >Difference: > >USER_DEFINED can be anyting, exe, bin, acpi table, etc. > >HOST_APPLICATION identify it is exe file. > > > >Add HOST_APPLICATION module type so it's easier to identify. > > > >Cc: Liming Gao <liming.gao@intel.com> > >Cc: Jiewen Yao <jiewen.yao@intel.com> > >Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> > >--- > > 1_introduction/12_terms.md | 4 ++-- > > 2_inf_overview/215_[depex]_section.md | 2 +- > > 2_inf_overview/26_[buildoptions]_section.md | 2 +- > > 3_edk_ii_inf_file_format/314_[depex]_sections.md | 6 +++--- > > 3_edk_ii_inf_file_format/32_component_inf_definition.md | 4 +++- > > 3_edk_ii_inf_file_format/34_[defines]_section.md | 6 ++++-- > > README.md | 3 > ++- > > appendix_f_module_types.md | 1 + > > 8 files changed, 17 insertions(+), 11 deletions(-) > > > >diff --git a/1_introduction/12_terms.md b/1_introduction/12_terms.md > >index 14827fd..ba96813 100644 > >--- a/1_introduction/12_terms.md > >+++ b/1_introduction/12_terms.md > >@@ -232,8 +232,8 @@ with a similar set of requirements. A module that is > of > >module type `BASE`, > > depends only on headers and libraries provided in the MDE, while a module > >that > > is of module type DXE_DRIVER depends on common DXE components. For > a > >definition > > of the various module types, see module type. The EDK II build system also > >-permits modules of type `USER_DEFINED`. These modules will not be > >processed by > >-the EDK II Build system. > >+permits modules of type `USER_DEFINED` and `HOST_APPLICATION`. > These > >modules > >+will not be processed by the EDK II Build system. > > > > **Package** > > > >diff --git a/2_inf_overview/215_[depex]_section.md > >b/2_inf_overview/215_[depex]_section.md > >index 912228f..e144d08 100644 > >--- a/2_inf_overview/215_[depex]_section.md > >+++ b/2_inf_overview/215_[depex]_section.md > >@@ -65,7 +65,7 @@ Additionally, the rules for specifying DEPEX sections > are > >as follows. > > [Depex.IA32]) are not permitted. It is permitted to have a Depex section > if > > one ModuleType modifier is specified (i.e., [Depex.common.PEIM). > > > >-* If the ModuleType is `USER_DEFINED`, then a `[Depex]` section is > optional. > >If > >+* If the ModuleType is `USER_DEFINED` or `HOST_APPLICATION`, then a > >`[Depex]` section is optional. If > > a PEI, SMM or DXE DEPEX section is required, the user must specify a > > ModuleType of `PEIM` to generate a `PEI_DEPEX` section, a > ModuleType of > > `DXE_DRIVER` to generate a `DXE_DEPEX` section, or a ModuleType of > >diff --git a/2_inf_overview/26_[buildoptions]_section.md > >b/2_inf_overview/26_[buildoptions]_section.md > >index 667d8d9..5e9059c 100644 > >--- a/2_inf_overview/26_[buildoptions]_section.md > >+++ b/2_inf_overview/26_[buildoptions]_section.md > >@@ -74,7 +74,7 @@ shown above. > > | `TAGNAME` | YES | Yes = * | `Conf/tools_def.txt` file > defines several > >different tag names - these are defined by developers; the default tag > name, > >`MYTOOLS`, is provided in the template for tools_def.txt and set in the > >`Conf/target.txt` file. | > > | `ARCH` | YES | Yes = * | `Conf/tools_def.txt` defines > at least four > >architectures: `IA32`, `X64` and `EBC`. This tag must use all capital letters > for > >the tag. Additional Architectures, such as PPC or ARM may be added as > >support becomes available. | > > | `TOOLCODE` | YES | NO | The tool code must be > one of the defined > >tool codes in the `Conf/tools_def.txt` file. The flags defined in this section > are > >appended to flags defined in the `tools_def.txt` file for individual tools. > >| > >-| | | | EXCEPTION: If the INF > `MODULE_TYPE`, defined in the > >`[Defines]` section is `USER_DEFINED`, then the flags listed in this section > are > >the only flags used for the TOOLCODE command specified in `Conf/ > >tools_def.txt`. | > >+| | | | EXCEPTION: If the INF > `MODULE_TYPE`, defined in > >the `[Defines]` section is `USER_DEFINED` or `HOST_APPLICATION`, then > the > >flags listed in this section are the only flags used for the TOOLCODE > command > >specified in `Conf/ tools_def.txt`. | > > | `ATTRIBUTE` | YES | NO | The attribute must be > specific to the tool > >code and must be a valid attribute handled by the build system. > >| > > > > Developers should use extreme caution when specifying items in this > section. > >diff --git a/3_edk_ii_inf_file_format/314_[depex]_sections.md > >b/3_edk_ii_inf_file_format/314_[depex]_sections.md > >index 02d5bb4..de307a2 100644 > >--- a/3_edk_ii_inf_file_format/314_[depex]_sections.md > >+++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md > >@@ -84,9 +84,9 @@ of a new section or the end of file. > > > > Drivers with `MODULE_TYPE` set to `SEC`, `PEI_CORE`, `DXE_CORE`, > >`SMM_CORE`, > > `UEFI_DRIVER` and `UEFI_APPLICATION` cannot have `[Depex]` sections. > >Libraries > >-and modules that are `USER_DEFINED` may have a `[Depex]` section. All > >remaining > >-drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, > `DXE_RUNTIME_DRIVER` > >and > >-`DXE_SMM_DRIVER` module types must have a `[Depex]` section. > >+and modules that are `USER_DEFINED` or `HOST_APPLICATION` may have > a > >`[Depex]` > >+section. All remaining drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, > >+`DXE_RUNTIME_DRIVER` and `DXE_SMM_DRIVER` module types must > have > >a `[Depex]` section. > > > > Libraries of type `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE and` > > `UEFI_APPLICATION` are not allowed to have a `[Depex]`. The > >`MODULE_TYPE` entry > >diff --git a/3_edk_ii_inf_file_format/32_component_inf_definition.md > >b/3_edk_ii_inf_file_format/32_component_inf_definition.md > >index b80218b..164771c 100644 > >--- a/3_edk_ii_inf_file_format/32_component_inf_definition.md > >+++ b/3_edk_ii_inf_file_format/32_component_inf_definition.md > >@@ -62,7 +62,8 @@ EBNF). > > if (LIBRARY_CLASS is declared in Defines Section): > > <Depex>* > > elif (MODULE_TYPE == "USER_DEFINED" > >- || MODULE_TYPE == "UEFI_DRIVER"): > >+ || MODULE_TYPE == "UEFI_DRIVER" > >+ || MODULE_TYPE == "HOST_APPLICATION"): > > <Depex>* > > elif (MODULE_TYPE == "PEIM" > > || MODULE_TYPE == "DXE_DRIVER" > >@@ -257,6 +258,7 @@ The following are common definitions used by > multiple > >section types. > > {"DXE_RUNTIME_DRIVER"} > {"DXE_SAL_DRIVER"} > > {"DXE_SMM_DRIVER"} {"UEFI_DRIVER"} > > {"UEFI_APPLICATION"} > {"USER_DEFINED"} > >+ {"HOST_APPLICATION"} > > <ModuleTypeList> ::= <ModuleType> [" " <ModuleType>]* > > <IdentifierName> ::= <TS> {<MACROVAL>} {<PcdName>} <TS> > > <Boolean> ::= {<BoolType>} {<Expression>} > >diff --git a/3_edk_ii_inf_file_format/34_[defines]_section.md > >b/3_edk_ii_inf_file_format/34_[defines]_section.md > >index 69be2b0..78ac58d 100644 > >--- a/3_edk_ii_inf_file_format/34_[defines]_section.md > >+++ b/3_edk_ii_inf_file_format/34_[defines]_section.md > >@@ -191,8 +191,10 @@ the `MODULE_UNI_FILE` entry must be a Unicode > file > >with an extension of .uni, > > Drivers and applications are not allowed to have a `MODULE_TYPE` of > >`"BASE`". > > Only libraries are permitted to a have a `MODULE_TYPE` of `"BASE`". A INF > file > > can be used to specify other binary files types, such as logo images or > >-legacy16 option ROMs. The `USER_DEFINED` module type must be used in > all > >cases > >-where the module type is not a member of `<Edk2ModuleType>`. > >+legacy16 option ROMs. `HOST_APPLICATION` module should be used to > >sepcify host > >+application that can run in OS environment directly. The `USER_DEFINED` > >module type > >+must be used in all cases where the module type is not a member of > >+`<Edk2ModuleType>`. > > > > **_INF_VERSION_** > > > >diff --git a/README.md b/README.md > >index 6819441..60fba19 100644 > >--- a/README.md > >+++ b/README.md > >@@ -201,4 +201,5 @@ Copyright (c) 2007-2017, Intel Corporation. All > rights > >reserved. > > | | Add clarification that !error statement is not permitted in > INF file > >| | > > | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] > section > >| | > > | | > [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=1162) > >Correct the item in Table 1 to align with 3.4 section > >| | > >-| 1.28 | > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > >Update INF spec to remove EDK related contents > >| Mar 2019 | > >\ No newline at end of file > >+| 1.28 | > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > >Update INF spec to remove EDK related contents > >| Mar 2019 | > >+| 1.29 | > [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=1952) > >Add new MODULE_TYPE HOST_APPLICATION > >| July 2019 | > >diff --git a/appendix_f_module_types.md b/appendix_f_module_types.md > >index 7082332..f7c2200 100644 > >--- a/appendix_f_module_types.md > >+++ b/appendix_f_module_types.md > >@@ -57,6 +57,7 @@ > > | UEFI_DRIVER | UEFI_DRIVER > >| .efi | This module type is used by UEFI Drivers that are > compliant with > >the EFI 1.10 Specification or the UEFI 2.x Specification. These modules > provide > >services in the boot services execution environment. UEFI Drivers that > return > >EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an > >error are unloaded from memory. > >| > > | UEFI_APPLICATION | UEFI_APPLICATION > >| .efi | This module type is used by UEFI Applications that > are compliant > >with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI > Applications > >are always unloaded when they exit. > >| > > | USER_DEFINED | USER_DEFINED > >| .bin or .rom | User defined extension > >| > >+| HOST_APPLICATION | HOST_APPLICATION > >| .exe or NULL | This module type is for building applications which > can run > >in host OS directly. > >| > > | EFI Dependency Section | Any - the code for these sections is > included as > >part of any module, and no separate INF is required. > >| .dpx | This is the compiled dependency section for SMM, > PEIM or DXE > >modules. A dependency section may also be generated from a dependency > >source (.dxs) file, if specified in the `[Sources]` section. > >| > > | EFI User Interface Section | Any - the code for these sections is included > as > >part of any module, and no separate INF is required. > >| .ui | This is a processed User Interface section > >| > > | EFI Version Section | Any - the code for these sections is > included as part > >of any module, and no separate INF is required. > >| .ver | This is a processed Version section | > >-- > >2.17.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION 2019-07-05 5:02 ` Yao, Jiewen @ 2019-07-05 5:53 ` Liming Gao 2019-07-05 5:57 ` Xiaoyu Lu 0 siblings, 1 reply; 5+ messages in thread From: Liming Gao @ 2019-07-05 5:53 UTC (permalink / raw) To: Yao, Jiewen, Lu, XiaoyuX, devel@edk2.groups.io Jiewen and Xiaoyu: > -----Original Message----- > From: Yao, Jiewen > Sent: Friday, July 5, 2019 1:02 PM > To: Gao, Liming <liming.gao@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; devel@edk2.groups.io > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION > > Answer below: > > > -----Original Message----- > > From: Gao, Liming > > Sent: Friday, July 5, 2019 12:59 PM > > To: Lu, XiaoyuX <xiaoyux.lu@intel.com>; devel@edk2.groups.io > > Cc: Yao, Jiewen <jiewen.yao@intel.com> > > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new > > MODULE_TYPE HOST_APPLICATION > > > > Xiaoyu: > > I would like to clarify that HOST_APPLICATION is for the execute file that > > can run in OS environment directly. It may be exe for Windows or be ELF for > > Linux. > [Jiewen] That is correct. OK. I suggest to update commit message to describe this is the executable file instead of exe file. > > > And, this new type module will directly run in OS environment. So, they will > > not be built into BIOS image, and not be dispatched by PeiCore, DxeCore and > > SmmCore. Right? If yes, they don't need [Depex] section. > [Jiewen] That is correct. OK. Please update the patch to describe there is no [Depex] section for this module type. > > > > > Last, can this new type be applied for EmulatorPkg\Win\Host and > > EmulatorPkg\Unix\Host module? > [Jiewen] Yes. OK. Can you submit BZ for this update? Thanks Liming > > > > > > Thanks > > Liming > > >-----Original Message----- > > >From: Lu, XiaoyuX > > >Sent: Wednesday, July 03, 2019 4:22 PM > > >To: devel@edk2.groups.io > > >Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Gao, Liming > > <liming.gao@intel.com>; > > >Yao, Jiewen <jiewen.yao@intel.com> > > >Subject: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE > > >HOST_APPLICATION > > > > > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1952 > > > > > >Background: > > >Host-based Firmware Analyzer (HBFA) is a opensouce tools enables > > advanced > > >testing of UEFI and UEFI PI drivers in developer's OS environment. It > > >will generate OS application which can run directly in OS environment. But > > >there is no explicit MODULE_TYPE to indicate those modules. > > > > > >Difference: > > >USER_DEFINED can be anyting, exe, bin, acpi table, etc. > > >HOST_APPLICATION identify it is exe file. > > > > > >Add HOST_APPLICATION module type so it's easier to identify. > > > > > >Cc: Liming Gao <liming.gao@intel.com> > > >Cc: Jiewen Yao <jiewen.yao@intel.com> > > >Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> > > >--- > > > 1_introduction/12_terms.md | 4 ++-- > > > 2_inf_overview/215_[depex]_section.md | 2 +- > > > 2_inf_overview/26_[buildoptions]_section.md | 2 +- > > > 3_edk_ii_inf_file_format/314_[depex]_sections.md | 6 +++--- > > > 3_edk_ii_inf_file_format/32_component_inf_definition.md | 4 +++- > > > 3_edk_ii_inf_file_format/34_[defines]_section.md | 6 ++++-- > > > README.md | 3 > > ++- > > > appendix_f_module_types.md | 1 + > > > 8 files changed, 17 insertions(+), 11 deletions(-) > > > > > >diff --git a/1_introduction/12_terms.md b/1_introduction/12_terms.md > > >index 14827fd..ba96813 100644 > > >--- a/1_introduction/12_terms.md > > >+++ b/1_introduction/12_terms.md > > >@@ -232,8 +232,8 @@ with a similar set of requirements. A module that is > > of > > >module type `BASE`, > > > depends only on headers and libraries provided in the MDE, while a module > > >that > > > is of module type DXE_DRIVER depends on common DXE components. For > > a > > >definition > > > of the various module types, see module type. The EDK II build system also > > >-permits modules of type `USER_DEFINED`. These modules will not be > > >processed by > > >-the EDK II Build system. > > >+permits modules of type `USER_DEFINED` and `HOST_APPLICATION`. > > These > > >modules > > >+will not be processed by the EDK II Build system. > > > > > > **Package** > > > > > >diff --git a/2_inf_overview/215_[depex]_section.md > > >b/2_inf_overview/215_[depex]_section.md > > >index 912228f..e144d08 100644 > > >--- a/2_inf_overview/215_[depex]_section.md > > >+++ b/2_inf_overview/215_[depex]_section.md > > >@@ -65,7 +65,7 @@ Additionally, the rules for specifying DEPEX sections > > are > > >as follows. > > > [Depex.IA32]) are not permitted. It is permitted to have a Depex section > > if > > > one ModuleType modifier is specified (i.e., [Depex.common.PEIM). > > > > > >-* If the ModuleType is `USER_DEFINED`, then a `[Depex]` section is > > optional. > > >If > > >+* If the ModuleType is `USER_DEFINED` or `HOST_APPLICATION`, then a > > >`[Depex]` section is optional. If > > > a PEI, SMM or DXE DEPEX section is required, the user must specify a > > > ModuleType of `PEIM` to generate a `PEI_DEPEX` section, a > > ModuleType of > > > `DXE_DRIVER` to generate a `DXE_DEPEX` section, or a ModuleType of > > >diff --git a/2_inf_overview/26_[buildoptions]_section.md > > >b/2_inf_overview/26_[buildoptions]_section.md > > >index 667d8d9..5e9059c 100644 > > >--- a/2_inf_overview/26_[buildoptions]_section.md > > >+++ b/2_inf_overview/26_[buildoptions]_section.md > > >@@ -74,7 +74,7 @@ shown above. > > > | `TAGNAME` | YES | Yes = * | `Conf/tools_def.txt` file > > defines several > > >different tag names - these are defined by developers; the default tag > > name, > > >`MYTOOLS`, is provided in the template for tools_def.txt and set in the > > >`Conf/target.txt` file. | > > > | `ARCH` | YES | Yes = * | `Conf/tools_def.txt` defines > > at least four > > >architectures: `IA32`, `X64` and `EBC`. This tag must use all capital letters > > for > > >the tag. Additional Architectures, such as PPC or ARM may be added as > > >support becomes available. | > > > | `TOOLCODE` | YES | NO | The tool code must be > > one of the defined > > >tool codes in the `Conf/tools_def.txt` file. The flags defined in this section > > are > > >appended to flags defined in the `tools_def.txt` file for individual tools. > > >| > > >-| | | | EXCEPTION: If the INF > > `MODULE_TYPE`, defined in the > > >`[Defines]` section is `USER_DEFINED`, then the flags listed in this section > > are > > >the only flags used for the TOOLCODE command specified in `Conf/ > > >tools_def.txt`. | > > >+| | | | EXCEPTION: If the INF > > `MODULE_TYPE`, defined in > > >the `[Defines]` section is `USER_DEFINED` or `HOST_APPLICATION`, then > > the > > >flags listed in this section are the only flags used for the TOOLCODE > > command > > >specified in `Conf/ tools_def.txt`. | > > > | `ATTRIBUTE` | YES | NO | The attribute must be > > specific to the tool > > >code and must be a valid attribute handled by the build system. > > >| > > > > > > Developers should use extreme caution when specifying items in this > > section. > > >diff --git a/3_edk_ii_inf_file_format/314_[depex]_sections.md > > >b/3_edk_ii_inf_file_format/314_[depex]_sections.md > > >index 02d5bb4..de307a2 100644 > > >--- a/3_edk_ii_inf_file_format/314_[depex]_sections.md > > >+++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md > > >@@ -84,9 +84,9 @@ of a new section or the end of file. > > > > > > Drivers with `MODULE_TYPE` set to `SEC`, `PEI_CORE`, `DXE_CORE`, > > >`SMM_CORE`, > > > `UEFI_DRIVER` and `UEFI_APPLICATION` cannot have `[Depex]` sections. > > >Libraries > > >-and modules that are `USER_DEFINED` may have a `[Depex]` section. All > > >remaining > > >-drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, > > `DXE_RUNTIME_DRIVER` > > >and > > >-`DXE_SMM_DRIVER` module types must have a `[Depex]` section. > > >+and modules that are `USER_DEFINED` or `HOST_APPLICATION` may have > > a > > >`[Depex]` > > >+section. All remaining drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, > > >+`DXE_RUNTIME_DRIVER` and `DXE_SMM_DRIVER` module types must > > have > > >a `[Depex]` section. > > > > > > Libraries of type `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE and` > > > `UEFI_APPLICATION` are not allowed to have a `[Depex]`. The > > >`MODULE_TYPE` entry > > >diff --git a/3_edk_ii_inf_file_format/32_component_inf_definition.md > > >b/3_edk_ii_inf_file_format/32_component_inf_definition.md > > >index b80218b..164771c 100644 > > >--- a/3_edk_ii_inf_file_format/32_component_inf_definition.md > > >+++ b/3_edk_ii_inf_file_format/32_component_inf_definition.md > > >@@ -62,7 +62,8 @@ EBNF). > > > if (LIBRARY_CLASS is declared in Defines Section): > > > <Depex>* > > > elif (MODULE_TYPE == "USER_DEFINED" > > >- || MODULE_TYPE == "UEFI_DRIVER"): > > >+ || MODULE_TYPE == "UEFI_DRIVER" > > >+ || MODULE_TYPE == "HOST_APPLICATION"): > > > <Depex>* > > > elif (MODULE_TYPE == "PEIM" > > > || MODULE_TYPE == "DXE_DRIVER" > > >@@ -257,6 +258,7 @@ The following are common definitions used by > > multiple > > >section types. > > > {"DXE_RUNTIME_DRIVER"} > > {"DXE_SAL_DRIVER"} > > > {"DXE_SMM_DRIVER"} {"UEFI_DRIVER"} > > > {"UEFI_APPLICATION"} > > {"USER_DEFINED"} > > >+ {"HOST_APPLICATION"} > > > <ModuleTypeList> ::= <ModuleType> [" " <ModuleType>]* > > > <IdentifierName> ::= <TS> {<MACROVAL>} {<PcdName>} <TS> > > > <Boolean> ::= {<BoolType>} {<Expression>} > > >diff --git a/3_edk_ii_inf_file_format/34_[defines]_section.md > > >b/3_edk_ii_inf_file_format/34_[defines]_section.md > > >index 69be2b0..78ac58d 100644 > > >--- a/3_edk_ii_inf_file_format/34_[defines]_section.md > > >+++ b/3_edk_ii_inf_file_format/34_[defines]_section.md > > >@@ -191,8 +191,10 @@ the `MODULE_UNI_FILE` entry must be a Unicode > > file > > >with an extension of .uni, > > > Drivers and applications are not allowed to have a `MODULE_TYPE` of > > >`"BASE`". > > > Only libraries are permitted to a have a `MODULE_TYPE` of `"BASE`". A INF > > file > > > can be used to specify other binary files types, such as logo images or > > >-legacy16 option ROMs. The `USER_DEFINED` module type must be used in > > all > > >cases > > >-where the module type is not a member of `<Edk2ModuleType>`. > > >+legacy16 option ROMs. `HOST_APPLICATION` module should be used to > > >sepcify host > > >+application that can run in OS environment directly. The `USER_DEFINED` > > >module type > > >+must be used in all cases where the module type is not a member of > > >+`<Edk2ModuleType>`. > > > > > > **_INF_VERSION_** > > > > > >diff --git a/README.md b/README.md > > >index 6819441..60fba19 100644 > > >--- a/README.md > > >+++ b/README.md > > >@@ -201,4 +201,5 @@ Copyright (c) 2007-2017, Intel Corporation. All > > rights > > >reserved. > > > | | Add clarification that !error statement is not permitted in > > INF file > > >| | > > > | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] > > section > > >| | > > > | | > > [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=1162) > > >Correct the item in Table 1 to align with 3.4 section > > >| | > > >-| 1.28 | > > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > > >Update INF spec to remove EDK related contents > > >| Mar 2019 | > > >\ No newline at end of file > > >+| 1.28 | > > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > > >Update INF spec to remove EDK related contents > > >| Mar 2019 | > > >+| 1.29 | > > [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=1952) > > >Add new MODULE_TYPE HOST_APPLICATION > > >| July 2019 | > > >diff --git a/appendix_f_module_types.md b/appendix_f_module_types.md > > >index 7082332..f7c2200 100644 > > >--- a/appendix_f_module_types.md > > >+++ b/appendix_f_module_types.md > > >@@ -57,6 +57,7 @@ > > > | UEFI_DRIVER | UEFI_DRIVER > > >| .efi | This module type is used by UEFI Drivers that are > > compliant with > > >the EFI 1.10 Specification or the UEFI 2.x Specification. These modules > > provide > > >services in the boot services execution environment. UEFI Drivers that > > return > > >EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return an > > >error are unloaded from memory. > > >| > > > | UEFI_APPLICATION | UEFI_APPLICATION > > >| .efi | This module type is used by UEFI Applications that > > are compliant > > >with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI > > Applications > > >are always unloaded when they exit. > > >| > > > | USER_DEFINED | USER_DEFINED > > >| .bin or .rom | User defined extension > > >| > > >+| HOST_APPLICATION | HOST_APPLICATION > > >| .exe or NULL | This module type is for building applications which > > can run > > >in host OS directly. > > >| > > > | EFI Dependency Section | Any - the code for these sections is > > included as > > >part of any module, and no separate INF is required. > > >| .dpx | This is the compiled dependency section for SMM, > > PEIM or DXE > > >modules. A dependency section may also be generated from a dependency > > >source (.dxs) file, if specified in the `[Sources]` section. > > >| > > > | EFI User Interface Section | Any - the code for these sections is included > > as > > >part of any module, and no separate INF is required. > > >| .ui | This is a processed User Interface section > > >| > > > | EFI Version Section | Any - the code for these sections is > > included as part > > >of any module, and no separate INF is required. > > >| .ver | This is a processed Version section | > > >-- > > >2.17.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION 2019-07-05 5:53 ` Liming Gao @ 2019-07-05 5:57 ` Xiaoyu Lu 0 siblings, 0 replies; 5+ messages in thread From: Xiaoyu Lu @ 2019-07-05 5:57 UTC (permalink / raw) To: Gao, Liming, Yao, Jiewen, devel@edk2.groups.io > -----Original Message----- > From: Gao, Liming > Sent: Friday, July 5, 2019 1:54 PM > To: Yao, Jiewen <jiewen.yao@intel.com>; Lu, XiaoyuX > <xiaoyux.lu@intel.com>; devel@edk2.groups.io > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new > MODULE_TYPE HOST_APPLICATION > > Jiewen and Xiaoyu: > > > -----Original Message----- > > From: Yao, Jiewen > > Sent: Friday, July 5, 2019 1:02 PM > > To: Gao, Liming <liming.gao@intel.com>; Lu, XiaoyuX > <xiaoyux.lu@intel.com>; devel@edk2.groups.io > > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new > MODULE_TYPE HOST_APPLICATION > > > > Answer below: > > > > > -----Original Message----- > > > From: Gao, Liming > > > Sent: Friday, July 5, 2019 12:59 PM > > > To: Lu, XiaoyuX <xiaoyux.lu@intel.com>; devel@edk2.groups.io > > > Cc: Yao, Jiewen <jiewen.yao@intel.com> > > > Subject: RE: [edk2-InfSpecification PATCH] Document: Add new > > > MODULE_TYPE HOST_APPLICATION > > > > > > Xiaoyu: > > > I would like to clarify that HOST_APPLICATION is for the execute file that > > > can run in OS environment directly. It may be exe for Windows or be ELF > for > > > Linux. > > [Jiewen] That is correct. > OK. I suggest to update commit message to describe this is the executable > file instead of exe file. > Agree. > > > > > And, this new type module will directly run in OS environment. So, they > will > > > not be built into BIOS image, and not be dispatched by PeiCore, DxeCore > and > > > SmmCore. Right? If yes, they don't need [Depex] section. > > [Jiewen] That is correct. > OK. Please update the patch to describe there is no [Depex] section for this > module type. > Ok. > > > > > > > > Last, can this new type be applied for EmulatorPkg\Win\Host and > > > EmulatorPkg\Unix\Host module? > > [Jiewen] Yes. > OK. Can you submit BZ for this update? > > Thanks > Liming I will file a BZ for it. Thanks, Xiaoyu > > > > > > > > > > Thanks > > > Liming > > > >-----Original Message----- > > > >From: Lu, XiaoyuX > > > >Sent: Wednesday, July 03, 2019 4:22 PM > > > >To: devel@edk2.groups.io > > > >Cc: Lu, XiaoyuX <xiaoyux.lu@intel.com>; Gao, Liming > > > <liming.gao@intel.com>; > > > >Yao, Jiewen <jiewen.yao@intel.com> > > > >Subject: [edk2-InfSpecification PATCH] Document: Add new > MODULE_TYPE > > > >HOST_APPLICATION > > > > > > > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1952 > > > > > > > >Background: > > > >Host-based Firmware Analyzer (HBFA) is a opensouce tools enables > > > advanced > > > >testing of UEFI and UEFI PI drivers in developer's OS environment. It > > > >will generate OS application which can run directly in OS environment. > But > > > >there is no explicit MODULE_TYPE to indicate those modules. > > > > > > > >Difference: > > > >USER_DEFINED can be anyting, exe, bin, acpi table, etc. > > > >HOST_APPLICATION identify it is exe file. > > > > > > > >Add HOST_APPLICATION module type so it's easier to identify. > > > > > > > >Cc: Liming Gao <liming.gao@intel.com> > > > >Cc: Jiewen Yao <jiewen.yao@intel.com> > > > >Signed-off-by: Xiaoyu Lu <xiaoyux.lu@intel.com> > > > >--- > > > > 1_introduction/12_terms.md | 4 ++-- > > > > 2_inf_overview/215_[depex]_section.md | 2 +- > > > > 2_inf_overview/26_[buildoptions]_section.md | 2 +- > > > > 3_edk_ii_inf_file_format/314_[depex]_sections.md | 6 +++--- > > > > 3_edk_ii_inf_file_format/32_component_inf_definition.md | 4 +++- > > > > 3_edk_ii_inf_file_format/34_[defines]_section.md | 6 ++++-- > > > > README.md | 3 > > > ++- > > > > appendix_f_module_types.md | 1 + > > > > 8 files changed, 17 insertions(+), 11 deletions(-) > > > > > > > >diff --git a/1_introduction/12_terms.md b/1_introduction/12_terms.md > > > >index 14827fd..ba96813 100644 > > > >--- a/1_introduction/12_terms.md > > > >+++ b/1_introduction/12_terms.md > > > >@@ -232,8 +232,8 @@ with a similar set of requirements. A module that > is > > > of > > > >module type `BASE`, > > > > depends only on headers and libraries provided in the MDE, while a > module > > > >that > > > > is of module type DXE_DRIVER depends on common DXE components. > For > > > a > > > >definition > > > > of the various module types, see module type. The EDK II build system > also > > > >-permits modules of type `USER_DEFINED`. These modules will not be > > > >processed by > > > >-the EDK II Build system. > > > >+permits modules of type `USER_DEFINED` and `HOST_APPLICATION`. > > > These > > > >modules > > > >+will not be processed by the EDK II Build system. > > > > > > > > **Package** > > > > > > > >diff --git a/2_inf_overview/215_[depex]_section.md > > > >b/2_inf_overview/215_[depex]_section.md > > > >index 912228f..e144d08 100644 > > > >--- a/2_inf_overview/215_[depex]_section.md > > > >+++ b/2_inf_overview/215_[depex]_section.md > > > >@@ -65,7 +65,7 @@ Additionally, the rules for specifying DEPEX sections > > > are > > > >as follows. > > > > [Depex.IA32]) are not permitted. It is permitted to have a Depex > section > > > if > > > > one ModuleType modifier is specified (i.e., [Depex.common.PEIM). > > > > > > > >-* If the ModuleType is `USER_DEFINED`, then a `[Depex]` section is > > > optional. > > > >If > > > >+* If the ModuleType is `USER_DEFINED` or `HOST_APPLICATION`, then > a > > > >`[Depex]` section is optional. If > > > > a PEI, SMM or DXE DEPEX section is required, the user must specify a > > > > ModuleType of `PEIM` to generate a `PEI_DEPEX` section, a > > > ModuleType of > > > > `DXE_DRIVER` to generate a `DXE_DEPEX` section, or a ModuleType of > > > >diff --git a/2_inf_overview/26_[buildoptions]_section.md > > > >b/2_inf_overview/26_[buildoptions]_section.md > > > >index 667d8d9..5e9059c 100644 > > > >--- a/2_inf_overview/26_[buildoptions]_section.md > > > >+++ b/2_inf_overview/26_[buildoptions]_section.md > > > >@@ -74,7 +74,7 @@ shown above. > > > > | `TAGNAME` | YES | Yes = * | `Conf/tools_def.txt` file > > > defines several > > > >different tag names - these are defined by developers; the default tag > > > name, > > > >`MYTOOLS`, is provided in the template for tools_def.txt and set in the > > > >`Conf/target.txt` file. | > > > > | `ARCH` | YES | Yes = * | `Conf/tools_def.txt` defines > > > at least four > > > >architectures: `IA32`, `X64` and `EBC`. This tag must use all capital letters > > > for > > > >the tag. Additional Architectures, such as PPC or ARM may be added as > > > >support becomes available. | > > > > | `TOOLCODE` | YES | NO | The tool code must be > > > one of the defined > > > >tool codes in the `Conf/tools_def.txt` file. The flags defined in this > section > > > are > > > >appended to flags defined in the `tools_def.txt` file for individual tools. > > > >| > > > >-| | | | EXCEPTION: If the INF > > > `MODULE_TYPE`, defined in the > > > >`[Defines]` section is `USER_DEFINED`, then the flags listed in this > section > > > are > > > >the only flags used for the TOOLCODE command specified in `Conf/ > > > >tools_def.txt`. | > > > >+| | | | EXCEPTION: If the INF > > > `MODULE_TYPE`, defined in > > > >the `[Defines]` section is `USER_DEFINED` or `HOST_APPLICATION`, then > > > the > > > >flags listed in this section are the only flags used for the TOOLCODE > > > command > > > >specified in `Conf/ tools_def.txt`. | > > > > | `ATTRIBUTE` | YES | NO | The attribute must be > > > specific to the tool > > > >code and must be a valid attribute handled by the build system. > > > >| > > > > > > > > Developers should use extreme caution when specifying items in this > > > section. > > > >diff --git a/3_edk_ii_inf_file_format/314_[depex]_sections.md > > > >b/3_edk_ii_inf_file_format/314_[depex]_sections.md > > > >index 02d5bb4..de307a2 100644 > > > >--- a/3_edk_ii_inf_file_format/314_[depex]_sections.md > > > >+++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md > > > >@@ -84,9 +84,9 @@ of a new section or the end of file. > > > > > > > > Drivers with `MODULE_TYPE` set to `SEC`, `PEI_CORE`, `DXE_CORE`, > > > >`SMM_CORE`, > > > > `UEFI_DRIVER` and `UEFI_APPLICATION` cannot have `[Depex]` sections. > > > >Libraries > > > >-and modules that are `USER_DEFINED` may have a `[Depex]` section. > All > > > >remaining > > > >-drivers, `PEIM`, `DXE_DRIVER`, `DXE_SAL_DRIVER`, > > > `DXE_RUNTIME_DRIVER` > > > >and > > > >-`DXE_SMM_DRIVER` module types must have a `[Depex]` section. > > > >+and modules that are `USER_DEFINED` or `HOST_APPLICATION` may > have > > > a > > > >`[Depex]` > > > >+section. All remaining drivers, `PEIM`, `DXE_DRIVER`, > `DXE_SAL_DRIVER`, > > > >+`DXE_RUNTIME_DRIVER` and `DXE_SMM_DRIVER` module types must > > > have > > > >a `[Depex]` section. > > > > > > > > Libraries of type `SEC`, `PEI_CORE`, `DXE_CORE`, `SMM_CORE and` > > > > `UEFI_APPLICATION` are not allowed to have a `[Depex]`. The > > > >`MODULE_TYPE` entry > > > >diff --git a/3_edk_ii_inf_file_format/32_component_inf_definition.md > > > >b/3_edk_ii_inf_file_format/32_component_inf_definition.md > > > >index b80218b..164771c 100644 > > > >--- a/3_edk_ii_inf_file_format/32_component_inf_definition.md > > > >+++ b/3_edk_ii_inf_file_format/32_component_inf_definition.md > > > >@@ -62,7 +62,8 @@ EBNF). > > > > if (LIBRARY_CLASS is declared in Defines Section): > > > > <Depex>* > > > > elif (MODULE_TYPE == "USER_DEFINED" > > > >- || MODULE_TYPE == "UEFI_DRIVER"): > > > >+ || MODULE_TYPE == "UEFI_DRIVER" > > > >+ || MODULE_TYPE == "HOST_APPLICATION"): > > > > <Depex>* > > > > elif (MODULE_TYPE == "PEIM" > > > > || MODULE_TYPE == "DXE_DRIVER" > > > >@@ -257,6 +258,7 @@ The following are common definitions used by > > > multiple > > > >section types. > > > > {"DXE_RUNTIME_DRIVER"} > > > {"DXE_SAL_DRIVER"} > > > > {"DXE_SMM_DRIVER"} {"UEFI_DRIVER"} > > > > {"UEFI_APPLICATION"} > > > {"USER_DEFINED"} > > > >+ {"HOST_APPLICATION"} > > > > <ModuleTypeList> ::= <ModuleType> [" " <ModuleType>]* > > > > <IdentifierName> ::= <TS> {<MACROVAL>} {<PcdName>} <TS> > > > > <Boolean> ::= {<BoolType>} {<Expression>} > > > >diff --git a/3_edk_ii_inf_file_format/34_[defines]_section.md > > > >b/3_edk_ii_inf_file_format/34_[defines]_section.md > > > >index 69be2b0..78ac58d 100644 > > > >--- a/3_edk_ii_inf_file_format/34_[defines]_section.md > > > >+++ b/3_edk_ii_inf_file_format/34_[defines]_section.md > > > >@@ -191,8 +191,10 @@ the `MODULE_UNI_FILE` entry must be a > Unicode > > > file > > > >with an extension of .uni, > > > > Drivers and applications are not allowed to have a `MODULE_TYPE` of > > > >`"BASE`". > > > > Only libraries are permitted to a have a `MODULE_TYPE` of `"BASE`". A > INF > > > file > > > > can be used to specify other binary files types, such as logo images or > > > >-legacy16 option ROMs. The `USER_DEFINED` module type must be > used in > > > all > > > >cases > > > >-where the module type is not a member of `<Edk2ModuleType>`. > > > >+legacy16 option ROMs. `HOST_APPLICATION` module should be used > to > > > >sepcify host > > > >+application that can run in OS environment directly. The > `USER_DEFINED` > > > >module type > > > >+must be used in all cases where the module type is not a member of > > > >+`<Edk2ModuleType>`. > > > > > > > > **_INF_VERSION_** > > > > > > > >diff --git a/README.md b/README.md > > > >index 6819441..60fba19 100644 > > > >--- a/README.md > > > >+++ b/README.md > > > >@@ -201,4 +201,5 @@ Copyright (c) 2007-2017, Intel Corporation. All > > > rights > > > >reserved. > > > > | | Add clarification that !error statement is not permitted in > > > INF file > > > >| | > > > > | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] > > > section > > > >| | > > > > | | > > > [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=1162) > > > >Correct the item in Table 1 to align with 3.4 section > > > >| | > > > >-| 1.28 | > > > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > > > >Update INF spec to remove EDK related contents > > > >| Mar 2019 | > > > >\ No newline at end of file > > > >+| 1.28 | > > > [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=1453) > > > >Update INF spec to remove EDK related contents > > > >| Mar 2019 | > > > >+| 1.29 | > > > [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=1952) > > > >Add new MODULE_TYPE HOST_APPLICATION > > > >| July 2019 | > > > >diff --git a/appendix_f_module_types.md > b/appendix_f_module_types.md > > > >index 7082332..f7c2200 100644 > > > >--- a/appendix_f_module_types.md > > > >+++ b/appendix_f_module_types.md > > > >@@ -57,6 +57,7 @@ > > > > | UEFI_DRIVER | UEFI_DRIVER > > > >| .efi | This module type is used by UEFI Drivers that are > > > compliant with > > > >the EFI 1.10 Specification or the UEFI 2.x Specification. These modules > > > provide > > > >services in the boot services execution environment. UEFI Drivers that > > > return > > > >EFI_SUCCESS are not unloaded from memory. UEFI Drivers that return > an > > > >error are unloaded from memory. > > > >| > > > > | UEFI_APPLICATION | UEFI_APPLICATION > > > >| .efi | This module type is used by UEFI Applications that > > > are compliant > > > >with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI > > > Applications > > > >are always unloaded when they exit. > > > >| > > > > | USER_DEFINED | USER_DEFINED > > > >| .bin or .rom | User defined extension > > > >| > > > >+| HOST_APPLICATION | HOST_APPLICATION > > > >| .exe or NULL | This module type is for building applications which > > > can run > > > >in host OS directly. > > > >| > > > > | EFI Dependency Section | Any - the code for these sections is > > > included as > > > >part of any module, and no separate INF is required. > > > >| .dpx | This is the compiled dependency section for SMM, > > > PEIM or DXE > > > >modules. A dependency section may also be generated from a > dependency > > > >source (.dxs) file, if specified in the `[Sources]` section. > > > >| > > > > | EFI User Interface Section | Any - the code for these sections is > included > > > as > > > >part of any module, and no separate INF is required. > > > >| .ui | This is a processed User Interface section > > > >| > > > > | EFI Version Section | Any - the code for these sections is > > > included as part > > > >of any module, and no separate INF is required. > > > >| .ver | This is a processed Version section | > > > >-- > > > >2.17.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-07-05 5:57 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-07-03 8:21 [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION Xiaoyu Lu 2019-07-05 4:58 ` Liming Gao 2019-07-05 5:02 ` Yao, Jiewen 2019-07-05 5:53 ` Liming Gao 2019-07-05 5:57 ` Xiaoyu Lu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox