FDF Rule section syntax


Konstantin Aladyshev
 

Hello!

Can someone explain to me the syntax of the Rule section statements in
FDF files.
Particularly, what is the meaning of the second column in these statements?
```
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
PE32 PE32 |.efi
DXE_DEPEX DXE_DEPEX |.depex
RAW ACPI |.acpi
RAW ASL |.aml
```
The section type is encoded in the first column, why do we need the second one?

https://edk2-docs.gitbook.io/edk-ii-fdf-specification/2_fdf_design_discussion/27_-rule-_sections
https://edk2-docs.gitbook.io/edk-ii-fdf-specification/3_edk_ii_fdf_file_format/39_-rule-_sections

Best regards,
Konstantin Aladyshev


Konstantin Aladyshev
 

Another question:
Out of curiosity I have created this rule for my INF file:
```
INF UefiLessonsPkg/SimplestApp/SimplestApp.inf

[RULE.COMMON.UEFI_APPLICATION]
FILE FREEFORM = $(NAMED_GUID) {
PE32 PE32 |.efi
}
```
INF file looks like this:
```
[Defines]
...
BASE_NAME = SimplestApp
FILE_GUID = 4a298956-fbe0-47fb-ae3a-2d5a0a959a26
MODULE_TYPE = UEFI_APPLICATION
...

[Sources]
SimplestApp.c
```
What does the final file for this INF module have 2 sections PE32?
Where does the statement "PE32 PE32 |.efi" look for *.efi files?
```
$ VolInfo <...>
...
File Name: 4A298956-FBE0-47FB-AE3A-2D5A0A959A26
File Offset: 0x00000160
File Length: 0x000007A0
File Attributes: 0x00
File State: 0xF8
EFI_FILE_DATA_VALID
File Type: 0x02 EFI_FV_FILETYPE_FREEFORM
------------------------------------------------------------
Type: EFI_SECTION_PE32
Size: 0x000003C4
------------------------------------------------------------
Type: EFI_SECTION_PE32
Size: 0x000003C4
```

On Sun, Jul 17, 2022 at 6:32 PM Konstantin Aladyshev
<aladyshev22@...> wrote:

Hello!

Can someone explain to me the syntax of the Rule section statements in
FDF files.
Particularly, what is the meaning of the second column in these statements?
```
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
PE32 PE32 |.efi
DXE_DEPEX DXE_DEPEX |.depex
RAW ACPI |.acpi
RAW ASL |.aml
```
The section type is encoded in the first column, why do we need the second one?

https://edk2-docs.gitbook.io/edk-ii-fdf-specification/2_fdf_design_discussion/27_-rule-_sections
https://edk2-docs.gitbook.io/edk-ii-fdf-specification/3_edk_ii_fdf_file_format/39_-rule-_sections

Best regards,
Konstantin Aladyshev