[edk2-devel] [edk2-InfSpecification PATCH] Document: Add new MODULE_TYPE HOST_APPLICATION

Xiaoyu Lu xiaoyux.lu at intel.com
Wed Jul 3 08:21:54 UTC 2019


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 at intel.com>
Cc: Jiewen Yao <jiewen.yao at intel.com>
Signed-off-by: Xiaoyu Lu <xiaoyux.lu at 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


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43205): https://edk2.groups.io/g/devel/message/43205
Mute This Topic: https://groups.io/mt/32295526/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list