From: "Yao, Jiewen" <jiewen.yao@intel.com>
To: "Gao, Liming" <liming.gao@intel.com>,
"Lu, XiaoyuX" <xiaoyux.lu@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION
Date: Fri, 5 Jul 2019 05:02:11 +0000 [thread overview]
Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503F6F5D40@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A2B09@SHSMSX104.ccr.corp.intel.com>
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
next prev parent reply other threads:[~2019-07-05 5:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2019-07-05 5:53 ` Liming Gao
2019-07-05 5:57 ` Xiaoyu Lu
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=74D8A39837DF1E4DA445A8C0B3885C503F6F5D40@shsmsx102.ccr.corp.intel.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