# 2.7 \[Binaries] Section

The `[Binaries]` section is used to specify the binary files that are distributed as part of a Binary Module. The binary files listed are not used by the `$(MAKE)` portion of a platform build, but are used by other tools to generate an image suitable for either an Application, FD or FV. A pipe character "|" is used to separate the fields. If the file is in a sub-directory, then the relative (to the INF file) path must be included as part of the file name. The first field is the FileType, which will let a platform integrator know the provided file's format, while the last three fields are optional. (Three defined targets, NOOPT, DEBUG and RELEASE are provided as part of the EDK II build environment.) The wildcard character, "\*", is permitted in the fields.

Additional information, such as what flags were used during the build, can also be added in the comments preceding an entry or in an in-line comment that follows the entry.

Files listed in this section do not require generation of AutoGen or Makefiles during the pre-processing build steps.

It is prohibited to list a file in the "common" architectural section and also in a specific architectural section. Binary files can be common to all architectures or specific to individual architectures, not both. The architectural section modifier is used as a restriction to mask binaries from target architectures that are not applicable. During a build, the tools will group binaries in listed in the common sections with the binaries listed for the architecture needed by the build.

This section uses one of the following section definitions:

```
[Binaries]
[Binaries.common]
[Binaries.IA32]
[Binaries.X64]
[Binaries.EBC]
```

The formats for entries in this section are:

```
FileType|Relative/path/and/filename.ext|DEBUG|GCC|UNIXGCC|TRUE
FileType|Filename.ext|*|GCC
FileType|Relative/path/and/filename.ext|RELEASE
FileType|Filename.ext|RELEASE
FileType|Filename.ext
```

The `FileType` falls into one of the following PI-defined types:

***GUID***

This binary is an `EFI_SECTION_GUID_DEFINED` encapsulation section. The EDK II build system does not support binary files of this type.

***ACPI***

The binary is ACPI binary code generated from an ACPI compiler. There is not PI defined type for this file, it uses an `EFI_SECTION_RAW` leaf section.

***ASL***

The binary is an ACPI Table generated from an ACPI compiler. There is no PI defined type for this file, it uses an `EFI_SECTION_RAW` leaf section.

***DISPOSABLE***

Unlike other file types listed in this section, the file will not be placed in a leaf section of type `EFI_SECTION_DISPOSABLE`, but rather it is a binary file that will be ignored by the build tools. (Useful for distributing PDB files with binary modules.)

***UEFI\_APP***

The binary file is a PE32 UEFI Application which will be placed into an FFS file of type `EFI_FV_FILETYPE_APPLICATION`.

***PE32***

This binary is an `EFI_SECTION_PE32` leaf section.

***PIC***

This binary is an `EFI_SECTION_PIC` leaf section.

***PEI\_DEPEX***

This binary is an `EFI_SECTION_PEI_DEPEX` leaf section.

***DXE\_DEPEX***

This binary is an `EFI_SECTION_DXE_DEPEX` leaf section.

***SMM\_DEPEX***

This binary is an `EFI_SECTION_SMM_DEPEX` leaf section.

***SUBTYPE\_GUID***

This binary is an `EFI_SECTION_FREEFORM_SUBTYPE_GUID` leaf section.

***TE***

This binary is an `EFI_SECTION_TE` leaf section.

***UNI\_VER***

This is a Unicode file that needs to be used to create an `EFI_SECTION_VERSION` leaf section.

***VER***

This binary is an `EFI_SECTION_VERSION` leaf section.

***UNI\_UI***

This is a Unicode file that needs to be used to create an `EFI_SECTION_USER_INTERFACE` leaf section.

***UI***

This binary is an `EFI_SECTION_USER_INTERFACE` leaf section.

***BIN***

This binary is an `EFI_SECTION_RAW` leaf section.

***RAW***

This binary is an `EFI_FV_FILETYPE_RAW` leaf section.

***COMPAT16***

This binary is an `EFI_SECTION_COMPATIBILTY16 leaf` section.

***FV***

This binary is an `EFI_SECTION_FIRMWARE_VOLUME_IMAGE` leaf section.

***LIB***

This binary is a pre-built library instance that provides the library class defined in the `LIBRARY_CLASS` statement in the `[Defines]` section.

**Note:** The section names listed above refer to leaf section type values rather than the name of the data structure.

The following are examples of different types of `[Binaries]` sections.

```
[Binaries.common]
  UNI_UI|DxeIpl.ui
  UNI_VER|DxeLoad.ver

[Binaries.IA32]
  DXE_DEPEX|Ia32/DxeIpl.dpx             # MYTOOLS
  PE32|Ia32/DEBUG/DxeIpl.efi|DEBUG      # MYTOOLS
  PE32|Ia32/RELEASE/DxeIpl.efi|RELEASE  # MYTOOLS DISPOSABLE|Ia32/DEBUG/DxeIpl.pdb

[Binaries.X64]
  DXE_DEPEX|X64/DxeIpl.dpx              # MYTOOLS
  PE32|X64/DxeIpl.efi                   # MYTOOLS
```
