#ifndef _COFF_AOUTHDR_H
#define _COFF_AOUTHDR_H
#include <stdint.h>
struct aouthdr
{
uint16_t magic;
uint16_t vstamp;
uint32_t tsize;
uint32_t dsize;
uint32_t bsize;
uint32_t entry;
uint32_t text_start;
uint32_t data_start;
uint32_t ImageBase;
uint32_t SectionAlignment;
uint32_t FileAlignment;
uint16_t MajorOperatingSystemVersion;
uint16_t MinorOperatingSystemVersion;
uint16_t MajorImageVersion;
uint16_t MinorImageVersion;
uint16_t MajorSubsystemVersion;
uint16_t MinorSubsystemVersion;
uint32_t Win32VersionValue;
uint32_t SizeOfImage;
uint32_t SizeOfHeaders;
uint32_t CheckSum;
uint16_t Subsystem;
uint16_t DllCharacteristics;
uint32_t SizeOfStackReserve;
uint32_t SizeOfStackCommit;
uint32_t SizeOfHeapReserve;
uint32_t SizeOfHeapCommit;
uint32_t LoaderFlags;
uint32_t NumberOfRvaAndSizes;
uint32_t DataDirectory[16][2];
};
struct aouthdr_64
{
uint16_t magic;
uint16_t vstamp;
uint32_t tsize;
uint32_t dsize;
uint32_t bsize;
uint32_t entry;
uint32_t text_start;
uint64_t ImageBase;
uint32_t SectionAlignment;
uint32_t FileAlignment;
uint16_t MajorOperatingSystemVersion;
uint16_t MinorOperatingSystemVersion;
uint16_t MajorImageVersion;
uint16_t MinorImageVersion;
uint16_t MajorSubsystemVersion;
uint16_t MinorSubsystemVersion;
uint32_t Win32VersionValue;
uint32_t SizeOfImage;
uint32_t SizeOfHeaders;
uint32_t CheckSum;
uint16_t Subsystem;
uint16_t DllCharacteristics;
uint64_t SizeOfStackReserve;
uint64_t SizeOfStackCommit;
uint64_t SizeOfHeapReserve;
uint64_t SizeOfHeapCommit;
uint32_t LoaderFlags;
uint32_t NumberOfRvaAndSizes;
uint32_t DataDirectory[16][2];
};
#define PE32MAGIC 0x10b
#define PE32PMAGIC 0x20b
#define FILEALIGNMENT 0x200 to align the raw data of sections in the
image file. The value should be a power of 2
between 512 and 64 K, inclusive. The default
is 512. If the SectionAlignment is less than
the architecture's page size, then
FileAlignment must match SectionAlignment. */
#define SECTIONALIGNMENT 0x1000 they are loaded into memory. It must be
greater than or equal to FileAlignment.
The default is the page size for the
architecture. */
#define LINKER_VERSION 256
#define VSTAMP (LINKER_VERSION / 100 + (LINKER_VERSION % 100) * 256)
#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
#endif