from .DepexSection import DepexSection\r
from .CompressSection import CompressSection\r
from .GuidSection import GuidSection\r
+from .SubTypeGuidSection import SubTypeGuidSection\r
from .Capsule import EFI_CERT_TYPE_PKCS7_GUID, EFI_CERT_TYPE_RSA2048_SHA256_GUID, Capsule\r
from .CapsuleData import CapsuleFfs, CapsulePayload, CapsuleFv, CapsuleFd, CapsuleAnyFile, CapsuleAfile\r
from .RuleComplexFile import RuleComplexFile\r
DepexSectionObj.Expression = self._SkippedChars.rstrip(T_CHAR_BRACE_R)\r
Obj.SectionList.append(DepexSectionObj)\r
\r
+ elif self._IsKeyword("SUBTYPE_GUID"):\r
+ if AlignValue == 'Auto':\r
+ raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)\r
+ SubTypeGuidValue = None\r
+ if not self._GetNextGuid():\r
+ raise Warning.Expected("GUID", self.FileName, self.CurrentLineNumber)\r
+ else:\r
+ SubTypeGuidValue = self._Token\r
+\r
+ if not self._IsToken(TAB_EQUAL_SPLIT):\r
+ raise Warning.ExpectedEquals(self.FileName, self.CurrentLineNumber)\r
+ if not self._GetNextToken():\r
+ raise Warning.Expected("section file path", self.FileName, self.CurrentLineNumber)\r
+ FileName = self._Token\r
+\r
+ SubTypeGuidSectionObj = SubTypeGuidSection()\r
+ SubTypeGuidSectionObj.Alignment = AlignValue\r
+ SubTypeGuidSectionObj.SubTypeGuid = SubTypeGuidValue\r
+ SubTypeGuidSectionObj.SectFileName = FileName\r
+ Obj.SectionList.append(SubTypeGuidSectionObj)\r
+\r
else:\r
if not self._GetNextWord():\r
raise Warning.Expected("section type", self.FileName, self.CurrentLineNumber)\r
--- /dev/null
+## @file\r
+# process Subtype GUIDed section generation\r
+#\r
+# Copyright (c) 2022, Konstantin Aladyshev <aladyshev22@gmail.com>\r
+#\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+\r
+##\r
+# Import Modules\r
+#\r
+from __future__ import absolute_import\r
+from . import Section\r
+import subprocess\r
+from .Ffs import SectionSuffix\r
+import Common.LongFilePathOs as os\r
+from .GenFdsGlobalVariable import GenFdsGlobalVariable\r
+from .GenFdsGlobalVariable import FindExtendTool\r
+from CommonDataClass.FdfClass import SubTypeGuidSectionClassObject\r
+import sys\r
+from Common import EdkLogger\r
+from Common.BuildToolError import *\r
+from .FvImageSection import FvImageSection\r
+from Common.LongFilePathSupport import OpenLongFilePath as open\r
+from Common.DataType import *\r
+\r
+## generate SubType GUIDed section\r
+#\r
+#\r
+class SubTypeGuidSection(SubTypeGuidSectionClassObject) :\r
+\r
+ ## The constructor\r
+ #\r
+ # @param self The object pointer\r
+ #\r
+ def __init__(self):\r
+ SubTypeGuidSectionClassObject.__init__(self)\r
+\r
+ ## GenSection() method\r
+ #\r
+ # Generate GUIDed section\r
+ #\r
+ # @param self The object pointer\r
+ # @param OutputPath Where to place output file\r
+ # @param ModuleName Which module this section belongs to\r
+ # @param SecNum Index of section\r
+ # @param KeyStringList Filter for inputs of section generation\r
+ # @param FfsInf FfsInfStatement object that contains this section data\r
+ # @param Dict dictionary contains macro and its value\r
+ # @retval tuple (Generated file name, section alignment)\r
+ #\r
+ def GenSection(self, OutputPath, ModuleName, SecNum, KeyStringList, FfsInf=None, Dict=None, IsMakefile=False):\r
+ #\r
+ # Generate all section\r
+ #\r
+ self.KeyStringList = KeyStringList\r
+ self.CurrentArchList = GenFdsGlobalVariable.ArchList\r
+ if FfsInf is not None:\r
+ self.Alignment = FfsInf.__ExtendMacro__(self.Alignment)\r
+ self.SubTypeGuid = FfsInf.__ExtendMacro__(self.SubTypeGuid)\r
+ self.SectionType = FfsInf.__ExtendMacro__(self.SectionType)\r
+ self.CurrentArchList = [FfsInf.CurrentArch]\r
+\r
+ if Dict is None:\r
+ Dict = {}\r
+\r
+ self.SectFileName = GenFdsGlobalVariable.ReplaceWorkspaceMacro(self.SectFileName)\r
+ self.SectFileName = GenFdsGlobalVariable.MacroExtend(self.SectFileName, Dict)\r
+\r
+ OutputFile = os.path.join(OutputPath, ModuleName + SUP_MODULE_SEC + SecNum + SectionSuffix.get("SUBTYPE_GUID"))\r
+ GenFdsGlobalVariable.GenerateSection(OutputFile, [self.SectFileName], 'EFI_SECTION_FREEFORM_SUBTYPE_GUID', Guid=self.SubTypeGuid, IsMakefile=IsMakefile)\r
+\r
+ OutputFileList = []\r
+ OutputFileList.append(OutputFile)\r
+ return OutputFileList, self.Alignment\r
+\r