diff options
author | Konstantin Aladyshev <aladyshev22@gmail.com> | 2022-07-20 22:01:17 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-10-19 06:32:07 +0000 |
commit | 225810a18249de541840396c74d9a918c691aa9e (patch) | |
tree | 64f6bb219e81ca325ca0de4280a45bf2d5717e0c /BaseTools/Source/Python/GenFds/FdfParser.py | |
parent | 81aeb9464821b59aa850c681abca3524d5164cc8 (diff) | |
download | edk2-225810a18249de541840396c74d9a918c691aa9e.tar.gz edk2-225810a18249de541840396c74d9a918c691aa9e.tar.bz2 edk2-225810a18249de541840396c74d9a918c691aa9e.zip |
BaseTools: Add support for SUBTYPE_GUID section generation
EFI_SECTION_FREEFORM_SUBTYPE_GUID is a leaf section type that contains
a single EFI_GUID in the header to describe the raw data.
Currently is is not possible to generate such section.
This patch adds initial support for the generation of such sections.
The added syntax for this type of section corresponds to EDKII
"[FV] section" documentation from the FDF Specification:
```
SECTION SUBTYPE_GUID <GUID> = <File>
```
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/GenFds/FdfParser.py')
-rw-r--r-- | BaseTools/Source/Python/GenFds/FdfParser.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index 5c8263f9bc..aa18fef09e 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -42,6 +42,7 @@ from .DataSection import DataSection from .DepexSection import DepexSection
from .CompressSection import CompressSection
from .GuidSection import GuidSection
+from .SubTypeGuidSection import SubTypeGuidSection
from .Capsule import EFI_CERT_TYPE_PKCS7_GUID, EFI_CERT_TYPE_RSA2048_SHA256_GUID, Capsule
from .CapsuleData import CapsuleFfs, CapsulePayload, CapsuleFv, CapsuleFd, CapsuleAnyFile, CapsuleAfile
from .RuleComplexFile import RuleComplexFile
@@ -2892,6 +2893,27 @@ class FdfParser: DepexSectionObj.Expression = self._SkippedChars.rstrip(T_CHAR_BRACE_R)
Obj.SectionList.append(DepexSectionObj)
+ elif self._IsKeyword("SUBTYPE_GUID"):
+ if AlignValue == 'Auto':
+ raise Warning("Auto alignment can only be used in PE32 or TE section ", self.FileName, self.CurrentLineNumber)
+ SubTypeGuidValue = None
+ if not self._GetNextGuid():
+ raise Warning.Expected("GUID", self.FileName, self.CurrentLineNumber)
+ else:
+ SubTypeGuidValue = self._Token
+
+ if not self._IsToken(TAB_EQUAL_SPLIT):
+ raise Warning.ExpectedEquals(self.FileName, self.CurrentLineNumber)
+ if not self._GetNextToken():
+ raise Warning.Expected("section file path", self.FileName, self.CurrentLineNumber)
+ FileName = self._Token
+
+ SubTypeGuidSectionObj = SubTypeGuidSection()
+ SubTypeGuidSectionObj.Alignment = AlignValue
+ SubTypeGuidSectionObj.SubTypeGuid = SubTypeGuidValue
+ SubTypeGuidSectionObj.SectFileName = FileName
+ Obj.SectionList.append(SubTypeGuidSectionObj)
+
else:
if not self._GetNextWord():
raise Warning.Expected("section type", self.FileName, self.CurrentLineNumber)
|