From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.6421.1659627834706124368 for ; Thu, 04 Aug 2022 08:43:55 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=WItaivMt; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659627834; x=1691163834; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Hbr9a0H2Be1r3/Hr+Czplo1lYWmkw7Aqdcxs2trge/A=; b=WItaivMtC8s1sOhotloMIUOWmnius/5cF8gS0phn3USVdVeFaDpbjOqf tONk8UKz98m+1w4d8UdpbqovijffC6EHbrmPzaTMWlEyy2V03I8o0KvvK sL2kLc76ZpVSpbSyKT0rDF34FsdCUGv5Y0dSqhYs/iknU+pWorzx93L5q e+KBWxJnDbS7NaYAMUKgSmCyI3xnM5XtThUXNAe1iINSOt0W+kqRDXkAs FjpaKURbIos0tr2AlUm8SclJjhBw9Rv4Qw1GFW5jqWQrxXt9CARaowyfd 672ob1GiXmx3vu1hL+58yjPwcR9yHCwfCCUJRUMRhXcYZ/zhCsXZSHrII A==; X-IronPort-AV: E=McAfee;i="6400,9594,10429"; a="289979045" X-IronPort-AV: E=Sophos;i="5.93,216,1654585200"; d="scan'208";a="289979045" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2022 08:43:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,216,1654585200"; d="scan'208";a="692671641" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 04 Aug 2022 08:43:53 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Thu, 4 Aug 2022 08:43:52 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Thu, 4 Aug 2022 08:43:52 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Thu, 4 Aug 2022 08:43:52 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Thu, 4 Aug 2022 08:43:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eGZotUL8xyJflZ7DjyVa9kY/PERnYOO/OiCP4TRDCWbWpPoWGX9SfrPuy/c19S2mhEqLtLR7Kp6GtH5Gvxrh6Rib3gVelqcvbAIvj9T/pXkru/2vrXYP6Vd8XY8dDRoqQMDXmonyPuVGDCBkBKqqEM3G0R/YLPPlOv71vPVLxgo1mwcZ7k+QLm1393duZow5YzU0/N7Ia2h4jx9CJiGdttXuZCt7dKYM4LpetpNiyQMT1v//e60VtlovKOrDfrnlP7vyj9+uCfcSO2Pw+N7/Fjcs+O4JpADVBEHq/SImkUBRqlaJTi1+0wjoU1JIefsb5J+5sE6pmliMVK+8f5fmOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JsB8+qCgyzWvBORw4y4ocIpfRlMU1yWueMuRq9acDCY=; b=SiSYYiixTTTQ/BsLfMaxI8zejuESKCPRuo2WAe5xJPy+xha8BTHHJnZdlci9DGeXpKdl6HxzmzXanAzqILPQh/yPmuJdy+Lke3atwoEfpd+vgUQCom/floW6E+q/sTQDsHsM6qdyjfHmmH92KaML6acDPc7XbsNEwgZcC7C9ikdS+33QXTS0TnsYQdwCvvO62OaMVBken0KVwC91+Ktrm0H/5n5WHwZES9YSfArIM3TDIM+gmfVTq2PG8U5Sltf0qw4L0CzEMykSTCiVXZkzbqH+I8Eyj1E3rH+VnCWfYnCOJ8wTR9ixMIv9I3XUTx5Gzsp8SzHaX5EpP5PEDOl3cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by BN6PR11MB2050.namprd11.prod.outlook.com (2603:10b6:404:3c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 15:43:50 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::d8d8:f132:ab23:2494]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::d8d8:f132:ab23:2494%4]) with mapi id 15.20.5504.014; Thu, 4 Aug 2022 15:43:50 +0000 From: "Bob Feng" To: Konstantin Aladyshev , "devel@edk2.groups.io" CC: "Gao, Liming" , "Chen, Christine" Subject: Re: [PATCH] BaseTools/GenSec: Support EFI_SECTION_FREEFORM_SUBTYPE_GUID sections Thread-Topic: [PATCH] BaseTools/GenSec: Support EFI_SECTION_FREEFORM_SUBTYPE_GUID sections Thread-Index: AQHYnEIvcOyAP5lmuk2w1jjl1DmoCK2e+TwQ Date: Thu, 4 Aug 2022 15:43:49 +0000 Message-ID: References: <20220720140812.23803-1-aladyshev22@gmail.com> In-Reply-To: <20220720140812.23803-1-aladyshev22@gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b24769ae-067e-4472-7082-08da76302061 x-ms-traffictypediagnostic: BN6PR11MB2050:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IAgTt9BDsEf+CdYrhySh+WAZ/XPLBH33bVSr4QiB8z15yiuX89T3BSYbeiiGstm/qFslznyjE4bRCDL1SNQ6AxURBQAIGap6rueDT/yXDKvxjq8B9k5kHCM8qe2Fa+x7fhun6napevZmtfutBId5B4fwV522nqYvpqa6+n0cmqnlNP3TYv8lDSxXStHWGdGh86nR0iQBpSWVNYk+8IH8nrNIFw6yhamsed7MvWekEB6qMSuRv87QpvG7wtUMd8/OJV7WFEmp94t0+F9+taGN4qzwuoQFLIyL0AQz1AZN//+F4DQKS3ASuUO511+uAgr3kjJzspW60c21nRrD4Fzzp+RjzmuXz2GLNkRZ94q5wn1t5mk8yIBboBt0Gb58pJlwEpZoUoRavkNf2PqdCuU3IwIZpwXOJQRG73uUx85gm6FtizvdsE3uZ9tnMQ5+fr2I3fTy0SOkovEP/IDUwFUAbidk84bCU7C59Gz9RHgbvKo3B4wL1PExtoe+bN3EybtwtskZSvDyVKx0ECjn6kyiEcB6RwqXBuW7rhoajQrd4hBf7iDXFkqvM4ua+c1kk/sDhtNrT8hiuJ+DV4EkeSO4v5JDhhRlNN5t3HqVLqh/flQI7lFznM+xPPynV9kiXuFc7ExKMwsASO8XBpJRdfGy9VRoYATcAdGZt2sN2dDWKOaVtG/IOtDFpUe9JOJfowiiC6xRabHEU4F1RR0GNYfKZdyEqVBGQYhZbjOOQZhKzAfaBAs+vprnAaZ5wibTH44kfwiwLhXf/Ps/kNEITD90PjNs5Q9Uy7TqRvOrM5hO3aG1xiss1OUQbaQFeXcD6e7H x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(396003)(346002)(39860400002)(136003)(376002)(366004)(33656002)(186003)(53546011)(7696005)(6506007)(41300700001)(2906002)(107886003)(26005)(9686003)(38100700002)(86362001)(82960400001)(38070700005)(55016003)(83380400001)(122000001)(478600001)(110136005)(54906003)(5660300002)(316002)(8936002)(52536014)(66446008)(66556008)(71200400001)(4326008)(64756008)(8676002)(76116006)(66946007)(66476007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?a6k+b1ep8Uuh1TTAFnkzegwYUpDyP2nAifMnyk1COkVfAE4ZBNCUaZf1QGTU?= =?us-ascii?Q?LFmfC8JZ74O8gC/65fTVFCfsVcPY35s3n8tczlFXfoK54cpwuAKDukSICe2w?= =?us-ascii?Q?cmA8QMwuVN44GIfrGs2gJKgnlqDClB4tmQE4/P24/pRClQhsIvPFTKH51Uxg?= =?us-ascii?Q?iBvrgUlNgg7d5Qqk6hqpIA67XaDk88hP+58r7Y++EvGJdFQx5HaRZS3np9Gb?= =?us-ascii?Q?jJcsFWzDC9s4hqBxDD7By5crwFl+AZN7ske57ZhKttzErgCl8kXR3KsGwbLX?= =?us-ascii?Q?AbBpkL8QhBOkVoUU5GC2SkjGPG6uQpaMW+vCp2yD1XhjEMVXZyNGarYVyEnm?= =?us-ascii?Q?rLahGh4tsToJYPUFTI+tuXw0WFmQeOfcUqUV3AU/bPtuIpFFgwas6Ry7ouIb?= =?us-ascii?Q?HGPbxdwgh7Sz5PEyALL1nEAeaqakRBg21yW61+YrOk26Sr5N7Yf9RYywvUcH?= =?us-ascii?Q?4a4DOkHAc3m6wAg/nVCbGyyvB1LnKGBxTLotSWrjHN6uCybcCJ8S183GgR68?= =?us-ascii?Q?PLfk5OM/rAy0yhY8efnvm+zCxWooclzcQqLrn3lbVjZQeVxpGL3ePY6VC01R?= =?us-ascii?Q?X4HJ5HlTEQ4ByXlan2Z+URzYna8jSKQcfc8H7FJJXDnoMtUpEmFilUQ61iaU?= =?us-ascii?Q?7dBZC9ETu4QgkB2v0YYU1ynSfcszMZCR5WLgG1oGoJbTicLEsv/l7qEXUwEd?= =?us-ascii?Q?WTo8qiA6QEIHHetfQztpsYtLN+BFTeTKAjBnn/wwXCTI7xjUy/uzNvIROqRY?= =?us-ascii?Q?uVGc1NWt/0T3Bzh8bSKP26tOeIugR/ruSeR319vKzFqyJaUKJs+Px7nlAx6g?= =?us-ascii?Q?0hv9cgI1XlvY4byi9Eyy2/cmRdpmVWGNqm4DJDPMGhzL/j/JYCkwORr4pee4?= =?us-ascii?Q?avnwpjjfzFU2NUoe2zyFqW1JKWW/5cfehXA8UuT5Ce/wcKuT/hNsCaoSquH4?= =?us-ascii?Q?L6cXAfOXkMzIXir/X6V0gpnj4YuS34C9qzOnRTjSN8fMmKKGh2nA9hmaf5p+?= =?us-ascii?Q?oWd8Ap5J0hzOg3Ot0Ug73Mz1xEFW62F7ACENckdCWmqrn/sLec0RUuwNwWXI?= =?us-ascii?Q?UI3qfHh37rePfFlvSZ/7kR5W+yD7OPOokEtEju/or033Ddy6tzRGGBGzd6lN?= =?us-ascii?Q?8Urmxcn5OwDoe+Nfg6aYucS5a6c16pIGzq80tSMh52P8F93X3IhiZCHd38yR?= =?us-ascii?Q?cDB5qUWcwoevJMinhq/O8+LvlH2jubd0uuca8yVTAzBk13bcKshmTIWDhP6o?= =?us-ascii?Q?EO2GjFtnEetWELkru0WE4MKdGEq2qo1q1809DCeyrqEw6Uo+msPFMK83UDXP?= =?us-ascii?Q?S5yHuKdeKQvXB43+PUr4UfOzHglgOkSSDiYM/DcPL9xjbaVTjpOX5IrvKFZR?= =?us-ascii?Q?4hb3QcaXqnWIaSt9tRtz5LEiOHogGKzQFKOzd8IVLcy7EZo4TQklJAJlLgP3?= =?us-ascii?Q?XuBV1eUh3qjAok84FxUuhePlZ2DDfEvOtvYPuZciS41VK4TnN5U9z++SWJnm?= =?us-ascii?Q?iVmYilHxtbF6Q0K0MZT7Sfu1TUWW6qblIpKYzVXpfhMf+qRPQ4bnpYm4VhCt?= =?us-ascii?Q?yOuZaj1d6zjtqzn6HfH0eLf685/VjXm3Wfg6OAY4?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b24769ae-067e-4472-7082-08da76302061 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Aug 2022 15:43:49.9642 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: k3LYTlo8jzJ6OX2Poi5BCK1cDaykK3XDgLkZxivdJ9E4uM6YljzuF9VVRD1Jo+ArKAGBHrlILOfVnWedzBXBYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB2050 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Bob Feng -----Original Message----- From: Konstantin Aladyshev =20 Sent: Wednesday, July 20, 2022 10:08 PM To: devel@edk2.groups.io Cc: Feng, Bob C ; Gao, Liming ; Chen, Christine ; Konstantin Aladyshev Subject: [PATCH] BaseTools/GenSec: Support EFI_SECTION_FREEFORM_SUBTYPE_GUI= D sections Signed-off-by: Konstantin Aladyshev --- BaseTools/Source/C/GenSec/GenSec.c | 171 ++++++++++++++++++++++++++++- 1 file changed, 169 insertions(+), 2 deletions(-) diff --git a/BaseTools/Source/C/GenSec/GenSec.c b/BaseTools/Source/C/GenSec= /GenSec.c index 35a1ac64ea..d86cc197cc 100644 --- a/BaseTools/Source/C/GenSec/GenSec.c +++ b/BaseTools/Source/C/GenSec/GenSec.c @@ -988,6 +988,155 @@ Returns: return EFI_SUCCESS; } =20 +EFI_STATUS +GenSectionSubtypeGuidSection ( + CHAR8 **InputFileName, + UINT32 *InputFileAlign, + UINT32 InputFileNum, + EFI_GUID *SubTypeGuid, + UINT8 **OutFileBuffer + ) +/*++ + +Routine Description: + + Generate a section of type EFI_SECTION_FREEFORM_SUBTYPE_GUID + The function won't validate the input file contents. + The utility will add section header to the file. + +Arguments: + + InputFileName - Name of the input file. + + InputFileAlign - Alignment required by the input file data. + + InputFileNum - Number of input files. Should be 1 for this section. + + SubTypeGuid - Specify vendor guid value. + + OutFileBuffer - Buffer pointer to Output file contents + +Returns: + + EFI_SUCCESS on successful return + EFI_INVALID_PARAMETER if InputFileNum is less than 1 + EFI_ABORTED if unable to open input file. + EFI_OUT_OF_RESOURCES No resource to complete the operation. + +--*/ +{ + UINT32 TotalLength; + UINT32 InputLength; + UINT32 Offset; + UINT8 *FileBuffer; + EFI_STATUS Status; + EFI_FREEFORM_SUBTYPE_GUID_SECTION *SubtypeGuidSect; + EFI_FREEFORM_SUBTYPE_GUID_SECTION2 *SubtypeGuidSect2; + + + InputLength =3D 0; + Offset =3D 0; + FileBuffer =3D NULL; + TotalLength =3D 0; + + if (InputFileNum > 1) { + Error (NULL, 0, 2000, "Invalid parameter", "more than one input file s= pecified"); + return STATUS_ERROR; + } else if (InputFileNum < 1) { + Error (NULL, 0, 2000, "Invalid parameter", "no input file specified"); + return STATUS_ERROR; + } + + // + // read all input file contents into a buffer + // first get the size of all file contents + // + Status =3D GetSectionContents ( + InputFileName, + InputFileAlign, + InputFileNum, + FileBuffer, + &InputLength + ); + + if (Status =3D=3D EFI_BUFFER_TOO_SMALL) { + Offset =3D sizeof (EFI_FREEFORM_SUBTYPE_GUID_SECTION); + if (InputLength + Offset >=3D MAX_SECTION_SIZE) { + Offset =3D sizeof (EFI_FREEFORM_SUBTYPE_GUID_SECTION2); + } + TotalLength =3D InputLength + Offset; + + FileBuffer =3D (UINT8 *) malloc (InputLength + Offset); + if (FileBuffer =3D=3D NULL) { + Error (NULL, 0, 4001, "Resource", "memory cannot be allocated"); + return EFI_OUT_OF_RESOURCES; + } + // + // read all input file contents into a buffer + // + Status =3D GetSectionContents ( + InputFileName, + InputFileAlign, + InputFileNum, + FileBuffer + Offset, + &InputLength + ); + } + + if (EFI_ERROR (Status)) { + if (FileBuffer !=3D NULL) { + free (FileBuffer); + } + Error (NULL, 0, 0001, "Error opening file for reading", InputFileName[= 0]); + return Status; + } + + if (InputLength =3D=3D 0) { + if (FileBuffer !=3D NULL) { + free (FileBuffer); + } + Error (NULL, 0, 2000, "Invalid parameter", "the size of input file %s = can't be zero", InputFileName); + return EFI_NOT_FOUND; + } + + // + // InputLength !=3D 0, but FileBuffer =3D=3D NULL means out of resources= . + // + if (FileBuffer =3D=3D NULL) { + Error (NULL, 0, 4001, "Resource", "memory cannot be allocated"); + return EFI_OUT_OF_RESOURCES; + } + + // + // Now data is in FileBuffer + Offset + // + if (TotalLength >=3D MAX_SECTION_SIZE) { + SubtypeGuidSect2 =3D (EFI_FREEFORM_SUBTYPE_GUID_SECTION2 *) FileBuffer= ; + SubtypeGuidSect2->CommonHeader.Type =3D EFI_SECTION_GUID_DEFINED; + SubtypeGuidSect2->CommonHeader.Size[0] =3D (UINT8) 0xff; + SubtypeGuidSect2->CommonHeader.Size[1] =3D (UINT8) 0xff; + SubtypeGuidSect2->CommonHeader.Size[2] =3D (UINT8) 0xff; + SubtypeGuidSect2->CommonHeader.ExtendedSize =3D InputLength + sizeof (= EFI_FREEFORM_SUBTYPE_GUID_SECTION2); + memcpy (&(SubtypeGuidSect2->SubTypeGuid), SubTypeGuid, sizeof (EFI_GUI= D)); + } else { + SubtypeGuidSect =3D (EFI_FREEFORM_SUBTYPE_GUID_SECTION *) FileBuffer; + SubtypeGuidSect->CommonHeader.Type =3D EFI_SECTION_FREEFORM_SUBTYP= E_GUID; + SubtypeGuidSect->CommonHeader.Size[0] =3D (UINT8) (TotalLength & 0xff= ); + SubtypeGuidSect->CommonHeader.Size[1] =3D (UINT8) ((TotalLength & 0xf= f00) >> 8); + SubtypeGuidSect->CommonHeader.Size[2] =3D (UINT8) ((TotalLength & 0xf= f0000) >> 16); + memcpy (&(SubtypeGuidSect->SubTypeGuid), SubTypeGuid, sizeof (EFI_GUID= )); + } + + VerboseMsg ("the size of the created section file is %u bytes", (unsigne= d) TotalLength); + + // + // Set OutFileBuffer + // + *OutFileBuffer =3D FileBuffer; + + return EFI_SUCCESS; +} + EFI_STATUS FfsRebaseImageRead ( IN VOID *FileHandle, @@ -1591,14 +1740,22 @@ Returns: } =20 // - // GuidValue is only required by Guided section. + // GuidValue is only required by Guided section and SubtypeGuid section. // - if ((SectType !=3D EFI_SECTION_GUID_DEFINED) && + if ((SectType !=3D EFI_SECTION_GUID_DEFINED) && (SectType !=3D EFI_SECTI= ON_FREEFORM_SUBTYPE_GUID) && (SectionName !=3D NULL) && (CompareGuid (&VendorGuid, &mZeroGuid) !=3D 0)) { fprintf (stdout, "Warning: the input guid value is not required for th= is section type %s\n", SectionName); } =20 + // + // Check whether there is GUID for the SubtypeGuid section + // + if ((SectType =3D=3D EFI_SECTION_FREEFORM_SUBTYPE_GUID) && (CompareGuid = (&VendorGuid, &mZeroGuid) =3D=3D 0)) { + Error (NULL, 0, 1001, "Missing options", "GUID"); + goto Finish; + } + // // Check whether there is input file // @@ -1667,6 +1824,16 @@ Returns: ); break; =20 + case EFI_SECTION_FREEFORM_SUBTYPE_GUID: + Status =3D GenSectionSubtypeGuidSection ( + InputFileName, + InputFileAlign, + InputFileNum, + &VendorGuid, + &OutFileBuffer + ); + break; + case EFI_SECTION_VERSION: Index =3D sizeof (EFI_COMMON_SECTION_HEADER); // --=20 2.25.1