/** @file\r
- EFI image format for PE32, PE32+ and TE. Please note some data structures are \r
- different for PE32 and PE32+. EFI_IMAGE_NT_HEADERS32 is for PE32 and \r
- EFI_IMAGE_NT_HEADERS64 is for PE32+. \r
+ EFI image format for PE32, PE32+ and TE. Please note some data structures are\r
+ different for PE32 and PE32+. EFI_IMAGE_NT_HEADERS32 is for PE32 and\r
+ EFI_IMAGE_NT_HEADERS64 is for PE32+.\r
\r
- This file is coded to the Visual Studio, Microsoft Portable Executable and \r
- Common Object File Format Specification, Revision 8.0 - May 16, 2006. \r
+ This file is coded to the Visual Studio, Microsoft Portable Executable and\r
+ Common Object File Format Specification, Revision 8.3 - February 6, 2013.\r
This file also includes some definitions in PI Specification, Revision 1.0.\r
\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php. \r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#define IMAGE_FILE_MACHINE_EBC 0x0EBC\r
#define IMAGE_FILE_MACHINE_X64 0x8664\r
#define IMAGE_FILE_MACHINE_ARMTHUMB_MIXED 0x01c2\r
+#define IMAGE_FILE_MACHINE_ARM64 0xAA64\r
\r
//\r
// EXE file formats\r
\r
///\r
/// @attention\r
-/// EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC means PE32 and \r
+/// EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC means PE32 and\r
/// EFI_IMAGE_OPTIONAL_HEADER32 must be used. The data structures only vary\r
/// after NT additional fields.\r
///\r
#define EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b\r
- \r
+\r
///\r
/// Optional Header Standard Fields for PE32.\r
///\r
\r
///\r
/// @attention\r
-/// EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC means PE32+ and \r
+/// EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC means PE32+ and\r
/// EFI_IMAGE_OPTIONAL_HEADER64 must be used. The data structures only vary\r
/// after NT additional fields.\r
///\r
/// Size of EFI_IMAGE_SECTION_HEADER.\r
///\r
#define EFI_IMAGE_SIZEOF_SECTION_HEADER 40\r
- \r
+\r
//\r
// Section Flags Values\r
//\r
#define EFI_IMAGE_SCN_CNT_CODE BIT5 ///< 0x00000020\r
#define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA BIT6 ///< 0x00000040\r
#define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA BIT7 ///< 0x00000080\r
- \r
+\r
#define EFI_IMAGE_SCN_LNK_OTHER BIT8 ///< 0x00000100 ///< Reserved.\r
#define EFI_IMAGE_SCN_LNK_INFO BIT9 ///< 0x00000200 ///< Section contains comments or some other type of information.\r
#define EFI_IMAGE_SCN_LNK_REMOVE BIT11 ///< 0x00000800 ///< Section contents will not become part of image.\r
#define EFI_IMAGE_SCN_LNK_COMDAT BIT12 ///< 0x00001000\r
- \r
+\r
#define EFI_IMAGE_SCN_ALIGN_1BYTES BIT20 ///< 0x00100000\r
#define EFI_IMAGE_SCN_ALIGN_2BYTES BIT21 ///< 0x00200000\r
#define EFI_IMAGE_SCN_ALIGN_4BYTES (BIT20|BIT21) ///< 0x00300000\r
#define EFI_IMAGE_SCN_ALIGN_16BYTES (BIT20|BIT22) ///< 0x00500000\r
#define EFI_IMAGE_SCN_ALIGN_32BYTES (BIT21|BIT22) ///< 0x00600000\r
#define EFI_IMAGE_SCN_ALIGN_64BYTES (BIT20|BIT21|BIT22) ///< 0x00700000\r
- \r
+\r
#define EFI_IMAGE_SCN_MEM_DISCARDABLE BIT25 ///< 0x02000000\r
#define EFI_IMAGE_SCN_MEM_NOT_CACHED BIT26 ///< 0x04000000\r
#define EFI_IMAGE_SCN_MEM_NOT_PAGED BIT27 ///< 0x08000000\r
#define EFI_IMAGE_COMDAT_SELECT_SAME_SIZE 3\r
#define EFI_IMAGE_COMDAT_SELECT_EXACT_MATCH 4\r
#define EFI_IMAGE_COMDAT_SELECT_ASSOCIATIVE 5\r
- \r
+\r
//\r
// the following values only be referred in PeCoff, not defined in PECOFF.\r
//\r
#define EFI_IMAGE_REL_I386_SECREL 0x000B\r
#define EFI_IMAGE_REL_I386_REL32 0x0014 ///< PC-relative 32-bit reference to the symbols virtual address.\r
\r
-// \r
+//\r
// x64 processor relocation types.\r
-// \r
+//\r
#define IMAGE_REL_AMD64_ABSOLUTE 0x0000\r
#define IMAGE_REL_AMD64_ADDR64 0x0001\r
#define IMAGE_REL_AMD64_ADDR32 0x0002\r
#define EFI_IMAGE_REL_BASED_HIGHLOW 3\r
#define EFI_IMAGE_REL_BASED_HIGHADJ 4\r
#define EFI_IMAGE_REL_BASED_MIPS_JMPADDR 5\r
+#define EFI_IMAGE_REL_BASED_ARM_MOV32A 5\r
+#define EFI_IMAGE_REL_BASED_ARM_MOV32T 7\r
#define EFI_IMAGE_REL_BASED_IA64_IMM64 9\r
#define EFI_IMAGE_REL_BASED_MIPS_JMPADDR16 9\r
#define EFI_IMAGE_REL_BASED_DIR64 10\r