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