Commit 46550e2b authored by Pali Rohár's avatar Pali Rohár Committed by Ard Biesheuvel
Browse files

include: pe.h: Fix PE definitions



* Rename constants to their standard PE names:
  - MZ_MAGIC -> IMAGE_DOS_SIGNATURE
  - PE_MAGIC -> IMAGE_NT_SIGNATURE
  - PE_OPT_MAGIC_PE32_ROM -> IMAGE_ROM_OPTIONAL_HDR_MAGIC
  - PE_OPT_MAGIC_PE32 -> IMAGE_NT_OPTIONAL_HDR32_MAGIC
  - PE_OPT_MAGIC_PE32PLUS -> IMAGE_NT_OPTIONAL_HDR64_MAGIC
  - IMAGE_DLL_CHARACTERISTICS_NX_COMPAT -> IMAGE_DLLCHARACTERISTICS_NX_COMPAT

* Import constants and their description from readpe and file projects
  which contains current up-to-date information:
  - IMAGE_FILE_MACHINE_*
  - IMAGE_FILE_*
  - IMAGE_SUBSYSTEM_*
  - IMAGE_DLLCHARACTERISTICS_*
  - IMAGE_DLLCHARACTERISTICS_EX_*
  - IMAGE_DEBUG_TYPE_*

* Add missing IMAGE_SCN_* constants and update their incorrect description

* Fix incorrect value of IMAGE_SCN_MEM_PURGEABLE constant

* Add description for win32_version and loader_flags PE fields

Signed-off-by: default avatarPali Rohár <pali@kernel.org>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent 3dcb524d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
		@ is accepted as an EFI binary. Booting via the UEFI stub
		@ will not execute those instructions, but the ARM/Linux
		@ boot protocol does, so we need some NOPs here.
		.inst	MZ_MAGIC | (0xe225 << 16)	@ eor r5, r5, 0x4d000
		.inst	IMAGE_DOS_SIGNATURE | (0xe225 << 16) @ eor r5, r5, 0x4d000
		eor	r5, r5, 0x4d000			@ undo previous insn
#else
		__nop
@@ -43,7 +43,7 @@
		.long	pe_header - start		@ Offset to the PE header.

pe_header:
		.long	PE_MAGIC
		.long	IMAGE_NT_SIGNATURE

coff_header:
		.short	IMAGE_FILE_MACHINE_THUMB	@ Machine
@@ -60,7 +60,7 @@ coff_header:
#define __pecoff_code_size (__pecoff_data_start - __efi_start)

optional_header:
		.short	PE_OPT_MAGIC_PE32		@ PE32 format
		.short	IMAGE_NT_OPTIONAL_HDR32_MAGIC	@ PE32 format
		.byte	0x02				@ MajorLinkerVersion
		.byte	0x14				@ MinorLinkerVersion
		.long	__pecoff_code_size		@ SizeOfCode
+3 −3
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@
	.macro	__EFI_PE_HEADER
#ifdef CONFIG_EFI
	.set	.Lpe_header_offset, . - .L_head
	.long	PE_MAGIC
	.long	IMAGE_NT_SIGNATURE
	.short	IMAGE_FILE_MACHINE_ARM64		// Machine
	.short	.Lsection_count				// NumberOfSections
	.long	0 					// TimeDateStamp
@@ -40,7 +40,7 @@
		IMAGE_FILE_LINE_NUMS_STRIPPED		// Characteristics

.Loptional_header:
	.short	PE_OPT_MAGIC_PE32PLUS			// PE32+ format
	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC		// PE32+ format
	.byte	0x02					// MajorLinkerVersion
	.byte	0x14					// MinorLinkerVersion
	.long	__initdata_begin - .Lefi_header_end	// SizeOfCode
@@ -66,7 +66,7 @@
	.long	.Lefi_header_end - .L_head		// SizeOfHeaders
	.long	0					// CheckSum
	.short	IMAGE_SUBSYSTEM_EFI_APPLICATION		// Subsystem
	.short	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT	// DllCharacteristics
	.short	IMAGE_DLLCHARACTERISTICS_NX_COMPAT	// DllCharacteristics
	.quad	0					// SizeOfStackReserve
	.quad	0					// SizeOfStackCommit
	.quad	0					// SizeOfHeapReserve
+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
#include <linux/sizes.h>

	.macro	__EFI_PE_HEADER
	.long	PE_MAGIC
	.long	IMAGE_NT_SIGNATURE
.Lcoff_header:
	.short	IMAGE_FILE_MACHINE_LOONGARCH64		/* Machine */
	.short	.Lsection_count				/* NumberOfSections */
@@ -20,7 +20,7 @@
		IMAGE_FILE_LINE_NUMS_STRIPPED		/* Characteristics */

.Loptional_header:
	.short	PE_OPT_MAGIC_PE32PLUS			/* PE32+ format */
	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC		/* PE32+ format */
	.byte	0x02					/* MajorLinkerVersion */
	.byte	0x14					/* MinorLinkerVersion */
	.long	__inittext_end - .Lefi_header_end	/* SizeOfCode */
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
	__HEAD

_head:
	.word	MZ_MAGIC		/* "MZ", MS-DOS header */
	.word	IMAGE_DOS_SIGNATURE	/* "MZ", MS-DOS header */
	.org	0x8
	.dword	_kernel_entry		/* Kernel entry point (physical address) */
	.dword	_kernel_asize		/* Kernel image effective size */
+4 −4
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
#include <asm/set_memory.h>

	.macro	__EFI_PE_HEADER
	.long	PE_MAGIC
	.long	IMAGE_NT_SIGNATURE
coff_header:
#ifdef CONFIG_64BIT
	.short	IMAGE_FILE_MACHINE_RISCV64		// Machine
@@ -27,9 +27,9 @@ coff_header:

optional_header:
#ifdef CONFIG_64BIT
	.short	PE_OPT_MAGIC_PE32PLUS			// PE32+ format
	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC		// PE32+ format
#else
	.short	PE_OPT_MAGIC_PE32			// PE32 format
	.short	IMAGE_NT_OPTIONAL_HDR32_MAGIC		// PE32 format
#endif
	.byte	0x02					// MajorLinkerVersion
	.byte	0x14					// MinorLinkerVersion
@@ -64,7 +64,7 @@ extra_header_fields:
	.long	efi_header_end - _start			// SizeOfHeaders
	.long	0					// CheckSum
	.short	IMAGE_SUBSYSTEM_EFI_APPLICATION		// Subsystem
	.short	IMAGE_DLL_CHARACTERISTICS_NX_COMPAT	// DllCharacteristics
	.short	IMAGE_DLLCHARACTERISTICS_NX_COMPAT	// DllCharacteristics
	.quad	0					// SizeOfStackReserve
	.quad	0					// SizeOfStackCommit
	.quad	0					// SizeOfHeapReserve
Loading