From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: liming.gao@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Sun, 07 Jul 2019 17:40:42 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Jul 2019 17:40:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,464,1557212400"; d="scan'208";a="167524804" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga003.jf.intel.com with ESMTP; 07 Jul 2019 17:40:41 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 7 Jul 2019 17:40:41 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 7 Jul 2019 17:40:40 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.109]) with mapi id 14.03.0439.000; Mon, 8 Jul 2019 08:40:39 +0800 From: "Liming Gao" To: "Lu, XiaoyuX" , "devel@edk2.groups.io" CC: "Yao, Jiewen" Subject: Re: [edk2-InfSpecification PATCH v2] Document: Add new MODULE_TYPE HOST_APPLICATION Thread-Topic: [edk2-InfSpecification PATCH v2] Document: Add new MODULE_TYPE HOST_APPLICATION Thread-Index: AQHVMwVFf3Upsb7OjEi/ibiIIG2hP6a/5Tuw Date: Mon, 8 Jul 2019 00:40:38 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A35AF@SHSMSX104.ccr.corp.intel.com> References: <20190705074318.24666-1-xiaoyux.lu@intel.com> In-Reply-To: <20190705074318.24666-1-xiaoyux.lu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Liming Gao >-----Original Message----- >From: Lu, XiaoyuX >Sent: Friday, July 05, 2019 3:43 PM >To: devel@edk2.groups.io >Cc: Lu, XiaoyuX ; Gao, Liming = ; >Yao, Jiewen >Subject: [edk2-InfSpecification PATCH v2] Document: Add new >MODULE_TYPE HOST_APPLICATION > >BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1952 > >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, execuatable file, bin, acpi table, etc. >HOST_APPLICATION identify it is a executable file. > >Add HOST_APPLICATION module type so it's easier to identify. > >Cc: Liming Gao >Cc: Jiewen Yao >Signed-off-by: Xiaoyu Lu >--- > 1_introduction/12_terms.md | 4 ++-- > 2_inf_overview/215_[depex]_section.md | 4 ++-- > 2_inf_overview/26_[buildoptions]_section.md | 2 +- > 3_edk_ii_inf_file_format/314_[depex]_sections.md | 7 ++++--- > 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, 19 insertions(+), 12 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 o= f >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 als= o >-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..a710cae 100644 >--- a/2_inf_overview/215_[depex]_section.md >+++ b/2_inf_overview/215_[depex]_section.md >@@ -72,8 +72,8 @@ Additionally, the rules for specifying DEPEX sections ar= e >as follows. > `DXE_SMM_DRIVER` to generate an `SMM_DEPEX` section. > > * If the ModuleType is `SEC`, `UEFI_APPLICATION`, `UEFI_DRIVER`, >`PEI_CORE`, >- `SMM_CORE` or `DXE_CORE`, no `[Depex]` sections are permitted and all >library >- class `[Depex]` sections are ignored. >+ `SMM_CORE`, `DXE_CORE`, `HOST_APPLICATION`, no `[Depex]` sections are >+ permitted and all library class `[Depex]` sections are ignored. > > * Module types `PEIM`, `DXE_DRIVER`, `DXE_RUNTIME_DRIVER`, >`DXE_SAL_DRIVER` and > `DXE_SMM_DRIVER` require a `[Depex]` section unless the dependencies >are >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 =3D * | `Conf/tools_def.txt` file def= ines several >different tag names - these are defined by developers; the default tag nam= e, >`MYTOOLS`, is provided in the template for tools_def.txt and set in the >`Conf/target.txt` file. | > | `ARCH` | YES | Yes =3D * | `Conf/tools_def.txt` defines = at least four >architectures: `IA32`, `X64` and `EBC`. This tag must use all capital lett= ers 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 th= e defined >tool codes in the `Conf/tools_def.txt` file. The flags defined in this sec= tion are >appended to flags defined in the `tools_def.txt` file for individual tools= . >| >-| | | | EXCEPTION: If the INF `MODULE_T= YPE`, defined in the >`[Defines]` section is `USER_DEFINED`, then the flags listed in this secti= on are >the only flags used for the TOOLCODE command specified in `Conf/ >tools_def.txt`. | >+| | | | EXCEPTION: If the INF `MODULE_T= YPE`, 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 comm= and >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 secti= on. >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..75b0139 100644 >--- a/3_edk_ii_inf_file_format/314_[depex]_sections.md >+++ b/3_edk_ii_inf_file_format/314_[depex]_sections.md >@@ -120,9 +120,10 @@ section. > > If the module is not a library (no `LIBRARY_CLASS` in the `[Defines]` sec= tion) > and the `MODULE_TYPE` is `SEC`, `SMM_CORE`, `DXE_CORE`, `PEI_CORE`, >-`UEFI_DRIVER` or `UEFI_APPLICATION` a Depex section is not permitted. If >one is >-found, the build tools must exit gracefully and provide the user with an = error >-message stating the `[Depex]` section is not valid for the `MODULE_TYPE` >+`UEFI_DRIVER`, `UEFI_APPLICATION` or `HOST_APPLICATION` a Depex >section is >+not permitted. If one is found, the build tools must exit gracefully and >+provide the user with an error message stating the `[Depex]` section is n= ot >+valid for the `MODULE_TYPE` > > If the module is a library (with a `LIBRARY_CLASS` statement in the `[Def= ines]` > section) and there is no module type defined in Depex section's modifier = and >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): > * > elif (MODULE_TYPE =3D=3D "USER_DEFINED" >- || MODULE_TYPE =3D=3D "UEFI_DRIVER"): >+ || MODULE_TYPE =3D=3D "UEFI_DRIVER" >+ || MODULE_TYPE =3D=3D "HOST_APPLICATION"): > * > elif (MODULE_TYPE =3D=3D "PEIM" > || MODULE_TYPE =3D=3D "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"} > ::=3D [" " ]* > ::=3D {} {} > ::=3D {} {} >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 ``. >+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 >+``. > > **_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 i= n INF file >| | > | | INF Spec: FixedAtBuild (VOID*) PCD use in the [DEPEX] sect= ion >| | > | | [#1162](https://bugzilla.tianocore.org/show_bug.cgi?id=3D1= 162) >Correct the item in Table 1 to align with 3.4 section >| | >-| 1.28 | [#1453](https://bugzilla.tianocore.org/show_bug.cgi?id=3D1= 453) >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=3D1= 453) >Update INF spec to remove EDK related contents >| Mar 2019 | >+| 1.29 | [#1952](https://bugzilla.tianocore.org/show_bug.cgi?id=3D1= 952) >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 com= pliant with >the EFI 1.10 Specification or the UEFI 2.x Specification. These modules pr= ovide >services in the boot services execution environment. UEFI Drivers that ret= urn >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 ar= e compliant >with the EFI 1.10 Specification or the UEFI 2.x Specification. UEFI Applic= ations >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 c= an run >in host OS directly. >| > | EFI Dependency Section | Any - the code for these sections is inclu= ded 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 inclu= ded 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 inclu= ded as part >of any module, and no separate INF is required. >| .ver | This is a processed Version section | >-- >2.17.1