62 lines
1.4 KiB
C
62 lines
1.4 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
|
|
#pragma once
|
|
|
|
#include <inttypes.h>
|
|
|
|
#include "macro.h"
|
|
#include "sparse-endian.h"
|
|
|
|
struct DosFileHeader {
|
|
uint8_t Magic[2];
|
|
le16_t LastSize;
|
|
le16_t nBlocks;
|
|
le16_t nReloc;
|
|
le16_t HdrSize;
|
|
le16_t MinAlloc;
|
|
le16_t MaxAlloc;
|
|
le16_t ss;
|
|
le16_t sp;
|
|
le16_t Checksum;
|
|
le16_t ip;
|
|
le16_t cs;
|
|
le16_t RelocPos;
|
|
le16_t nOverlay;
|
|
le16_t reserved[4];
|
|
le16_t OEMId;
|
|
le16_t OEMInfo;
|
|
le16_t reserved2[10];
|
|
le32_t ExeHeader;
|
|
} _packed_;
|
|
|
|
#define PE_HEADER_MACHINE_I386 0x014cU
|
|
#define PE_HEADER_MACHINE_X64 0x8664U
|
|
|
|
struct PeFileHeader {
|
|
le16_t Machine;
|
|
le16_t NumberOfSections;
|
|
le32_t TimeDateStamp;
|
|
le32_t PointerToSymbolTable;
|
|
le32_t NumberOfSymbols;
|
|
le16_t SizeOfOptionalHeader;
|
|
le16_t Characteristics;
|
|
} _packed_;
|
|
|
|
struct PeHeader {
|
|
uint8_t Magic[4];
|
|
struct PeFileHeader FileHeader;
|
|
} _packed_;
|
|
|
|
struct PeSectionHeader {
|
|
uint8_t Name[8];
|
|
le32_t VirtualSize;
|
|
le32_t VirtualAddress;
|
|
le32_t SizeOfRawData;
|
|
le32_t PointerToRawData;
|
|
le32_t PointerToRelocations;
|
|
le32_t PointerToLinenumbers;
|
|
le16_t NumberOfRelocations;
|
|
le16_t NumberOfLinenumbers;
|
|
le32_t Characteristics;
|
|
} _packed_;
|