16#ifndef LIEF_COFF_RELOCATION_H
17#define LIEF_COFF_RELOCATION_H
38 static constexpr uint32_t I386 = 1 << 17;
39 static constexpr uint32_t X64 = 1 << 18;
40 static constexpr uint32_t ARM = 1 << 19;
41 static constexpr uint32_t ARM64 = 1 << 20;
42 static constexpr uint32_t MIPS = 1 << 21;
43 enum class TYPE : uint32_t {
49 UNKNOWN = uint32_t(-1),
50 I386_ABSOLUTE = I386 + 0x0000,
51 I386_DIR16 = I386 + 0x0001,
52 I386_REL16 = I386 + 0x0002,
53 I386_DIR32 = I386 + 0x0006,
54 I386_DIR32NB = I386 + 0x0007,
55 I386_SEG12 = I386 + 0x0009,
56 I386_SECTION = I386 + 0x000A,
57 I386_SECREL = I386 + 0x000B,
58 I386_TOKEN = I386 + 0x000C,
59 I386_SECREL7 = I386 + 0x000D,
60 I386_REL32 = I386 + 0x0014,
62 AMD64_ABSOLUTE = X64 + 0x0000,
63 AMD64_ADDR64 = X64 + 0x0001,
64 AMD64_ADDR32 = X64 + 0x0002,
65 AMD64_ADDR32NB = X64 + 0x0003,
66 AMD64_REL32 = X64 + 0x0004,
67 AMD64_REL32_1 = X64 + 0x0005,
68 AMD64_REL32_2 = X64 + 0x0006,
69 AMD64_REL32_3 = X64 + 0x0007,
70 AMD64_REL32_4 = X64 + 0x0008,
71 AMD64_REL32_5 = X64 + 0x0009,
72 AMD64_SECTION = X64 + 0x000A,
73 AMD64_SECREL = X64 + 0x000B,
74 AMD64_SECREL7 = X64 + 0x000C,
75 AMD64_TOKEN = X64 + 0x000D,
76 AMD64_SREL32 = X64 + 0x000E,
77 AMD64_PAIR = X64 + 0x000F,
78 AMD64_SSPAN32 = X64 + 0x0010,
80 ARM_ABSOLUTE = ARM + 0x0000,
81 ARM_ADDR32 = ARM + 0x0001,
82 ARM_ADDR32NB = ARM + 0x0002,
83 ARM_BRANCH24 = ARM + 0x0003,
84 ARM_BRANCH11 = ARM + 0x0004,
85 ARM_TOKEN = ARM + 0x0005,
86 ARM_BLX24 = ARM + 0x0008,
87 ARM_BLX11 = ARM + 0x0009,
88 ARM_REL32 = ARM + 0x000A,
89 ARM_SECTION = ARM + 0x000E,
90 ARM_SECREL = ARM + 0x000F,
91 ARM_MOV32A = ARM + 0x0010,
92 ARM_MOV32T = ARM + 0x0011,
93 ARM_BRANCH20T = ARM + 0x0012,
94 ARM_BRANCH24T = ARM + 0x0014,
95 ARM_BLX23T = ARM + 0x0015,
96 ARM_PAIR = ARM + 0x0016,
98 ARM64_ABSOLUTE = ARM64 + 0x0000,
99 ARM64_ADDR32 = ARM64 + 0x0001,
100 ARM64_ADDR32NB = ARM64 + 0x0002,
101 ARM64_BRANCH26 = ARM64 + 0x0003,
102 ARM64_PAGEBASE_REL21 = ARM64 + 0x0004,
103 ARM64_REL21 = ARM64 + 0x0005,
104 ARM64_PAGEOFFSET_12A = ARM64 + 0x0006,
105 ARM64_PAGEOFFSET_12L = ARM64 + 0x0007,
106 ARM64_SECREL = ARM64 + 0x0008,
107 ARM64_SECREL_LOW12A = ARM64 + 0x0009,
108 ARM64_SECREL_HIGH12A = ARM64 + 0x000A,
109 ARM64_SECREL_LOW12L = ARM64 + 0x000B,
110 ARM64_TOKEN = ARM64 + 0x000C,
111 ARM64_SECTION = ARM64 + 0x000D,
112 ARM64_ADDR64 = ARM64 + 0x000E,
113 ARM64_BRANCH19 = ARM64 + 0x000F,
114 ARM64_BRANCH14 = ARM64 + 0x0010,
115 ARM64_REL32 = ARM64 + 0x0011,
117 MIPS_ABSOLUTE = MIPS + 0x0000,
118 MIPS_REFHALF = MIPS + 0x0001,
119 MIPS_REFWORD = MIPS + 0x0002,
120 MIPS_JMPADDR = MIPS + 0x0003,
121 MIPS_REFHI = MIPS + 0x0004,
122 MIPS_REFLO = MIPS + 0x0005,
123 MIPS_GPREL = MIPS + 0x0006,
124 MIPS_LITERAL = MIPS + 0x0007,
125 MIPS_SECTION = MIPS + 0x000A,
126 MIPS_SECREL = MIPS + 0x000B,
127 MIPS_SECRELLO = MIPS + 0x000C,
128 MIPS_SECRELHI = MIPS + 0x000D,
129 MIPS_JMPADDR16 = MIPS + 0x0010,
130 MIPS_REFWORDNB = MIPS + 0x0022,
131 MIPS_PAIR = MIPS + 0x0025,