]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/shared/pe-header.h
4ddfce39e6b01355200c5cdb617670046834924b
[thirdparty/systemd.git] / src / shared / pe-header.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2
3 #pragma once
4
5 #include <inttypes.h>
6
7 #include "macro.h"
8 #include "sparse-endian.h"
9
10 struct DosFileHeader {
11 uint8_t Magic[2];
12 le16_t LastSize;
13 le16_t nBlocks;
14 le16_t nReloc;
15 le16_t HdrSize;
16 le16_t MinAlloc;
17 le16_t MaxAlloc;
18 le16_t ss;
19 le16_t sp;
20 le16_t Checksum;
21 le16_t ip;
22 le16_t cs;
23 le16_t RelocPos;
24 le16_t nOverlay;
25 le16_t reserved[4];
26 le16_t OEMId;
27 le16_t OEMInfo;
28 le16_t reserved2[10];
29 le32_t ExeHeader;
30 } _packed_;
31
32 struct PeFileHeader {
33 le16_t Machine;
34 le16_t NumberOfSections;
35 le32_t TimeDateStamp;
36 le32_t PointerToSymbolTable;
37 le32_t NumberOfSymbols;
38 le16_t SizeOfOptionalHeader;
39 le16_t Characteristics;
40 } _packed_;
41
42 struct PeHeader {
43 uint8_t Magic[4];
44 struct PeFileHeader FileHeader;
45 } _packed_;
46
47 struct PeSectionHeader {
48 uint8_t Name[8];
49 le32_t VirtualSize;
50 le32_t VirtualAddress;
51 le32_t SizeOfRawData;
52 le32_t PointerToRawData;
53 le32_t PointerToRelocations;
54 le32_t PointerToLinenumbers;
55 le16_t NumberOfRelocations;
56 le16_t NumberOfLinenumbers;
57 le32_t Characteristics;
58 } _packed_;