17#define DEBUG_TYPE "hexagon-elf-writer"
20using namespace Hexagon;
32 bool IsPCRel)
const override;
41unsigned HexagonELFObjectWriter::getRelocType(
const MCFixup &
Fixup,
59 switch (
Fixup.getKind()) {
66 return ELF::R_HEX_DTPREL_32;
68 return ELF::R_HEX_GOT_32;
70 return ELF::R_HEX_GOTREL_32;
72 return ELF::R_HEX_GD_GOT_32;
74 return ELF::R_HEX_IE_32;
76 return ELF::R_HEX_IE_GOT_32;
78 return ELF::R_HEX_LD_GOT_32;
80 return ELF::R_HEX_32_PCREL;
82 return ELF::R_HEX_TPREL_32;
84 return IsPCRel ? ELF::R_HEX_32_PCREL : ELF::R_HEX_32;
91 return ELF::R_HEX_DTPREL_16;
93 return ELF::R_HEX_GOT_16;
95 return ELF::R_HEX_GD_GOT_16;
97 return ELF::R_HEX_IE_GOT_16;
99 return ELF::R_HEX_LD_GOT_16;
101 return ELF::R_HEX_TPREL_16;
103 return ELF::R_HEX_16;
110 return ELF::R_HEX_B22_PCREL;
112 return ELF::R_HEX_B15_PCREL;
114 return ELF::R_HEX_B7_PCREL;
116 return ELF::R_HEX_LO16;
118 return ELF::R_HEX_HI16;
120 return ELF::R_HEX_32;
122 return ELF::R_HEX_16;
126 return ELF::R_HEX_GPREL16_0;
128 return ELF::R_HEX_GPREL16_1;
130 return ELF::R_HEX_GPREL16_2;
132 return ELF::R_HEX_GPREL16_3;
134 return ELF::R_HEX_HL16;
136 return ELF::R_HEX_B13_PCREL;
138 return ELF::R_HEX_B9_PCREL;
140 return ELF::R_HEX_B32_PCREL_X;
142 return ELF::R_HEX_32_6_X;
144 return ELF::R_HEX_B22_PCREL_X;
146 return ELF::R_HEX_B15_PCREL_X;
148 return ELF::R_HEX_B13_PCREL_X;
150 return ELF::R_HEX_B9_PCREL_X;
152 return ELF::R_HEX_B7_PCREL_X;
154 return ELF::R_HEX_16_X;
156 return ELF::R_HEX_12_X;
158 return ELF::R_HEX_11_X;
160 return ELF::R_HEX_10_X;
162 return ELF::R_HEX_9_X;
164 return ELF::R_HEX_8_X;
166 return ELF::R_HEX_7_X;
168 return ELF::R_HEX_6_X;
170 return ELF::R_HEX_32_PCREL;
172 return ELF::R_HEX_COPY;
174 return ELF::R_HEX_GLOB_DAT;
176 return ELF::R_HEX_JMP_SLOT;
178 return ELF::R_HEX_RELATIVE;
180 return ELF::R_HEX_PLT_B22_PCREL;
182 return ELF::R_HEX_GOTREL_LO16;
184 return ELF::R_HEX_GOTREL_HI16;
186 return ELF::R_HEX_GOTREL_32;
188 return ELF::R_HEX_GOT_LO16;
190 return ELF::R_HEX_GOT_HI16;
192 return ELF::R_HEX_GOT_32;
194 return ELF::R_HEX_GOT_16;
196 return ELF::R_HEX_DTPMOD_32;
198 return ELF::R_HEX_DTPREL_LO16;
200 return ELF::R_HEX_DTPREL_HI16;
202 return ELF::R_HEX_DTPREL_32;
204 return ELF::R_HEX_DTPREL_16;
206 return ELF::R_HEX_GD_PLT_B22_PCREL;
208 return ELF::R_HEX_LD_PLT_B22_PCREL;
210 return ELF::R_HEX_GD_GOT_LO16;
212 return ELF::R_HEX_GD_GOT_HI16;
214 return ELF::R_HEX_GD_GOT_32;
216 return ELF::R_HEX_GD_GOT_16;
218 return ELF::R_HEX_LD_GOT_LO16;
220 return ELF::R_HEX_LD_GOT_HI16;
222 return ELF::R_HEX_LD_GOT_32;
224 return ELF::R_HEX_LD_GOT_16;
226 return ELF::R_HEX_IE_LO16;
228 return ELF::R_HEX_IE_HI16;
230 return ELF::R_HEX_IE_32;
232 return ELF::R_HEX_IE_GOT_LO16;
234 return ELF::R_HEX_IE_GOT_HI16;
236 return ELF::R_HEX_IE_GOT_32;
238 return ELF::R_HEX_IE_GOT_16;
240 return ELF::R_HEX_TPREL_LO16;
242 return ELF::R_HEX_TPREL_HI16;
244 return ELF::R_HEX_TPREL_32;
246 return ELF::R_HEX_TPREL_16;
248 return ELF::R_HEX_6_PCREL_X;
250 return ELF::R_HEX_GOTREL_32_6_X;
252 return ELF::R_HEX_GOTREL_16_X;
254 return ELF::R_HEX_GOTREL_11_X;
256 return ELF::R_HEX_GOT_32_6_X;
258 return ELF::R_HEX_GOT_16_X;
260 return ELF::R_HEX_GOT_11_X;
262 return ELF::R_HEX_DTPREL_32_6_X;
264 return ELF::R_HEX_DTPREL_16_X;
266 return ELF::R_HEX_DTPREL_11_X;
268 return ELF::R_HEX_GD_GOT_32_6_X;
270 return ELF::R_HEX_GD_GOT_16_X;
272 return ELF::R_HEX_GD_GOT_11_X;
274 return ELF::R_HEX_LD_GOT_32_6_X;
276 return ELF::R_HEX_LD_GOT_16_X;
278 return ELF::R_HEX_LD_GOT_11_X;
280 return ELF::R_HEX_IE_32_6_X;
282 return ELF::R_HEX_IE_16_X;
284 return ELF::R_HEX_IE_GOT_32_6_X;
286 return ELF::R_HEX_IE_GOT_16_X;
288 return ELF::R_HEX_IE_GOT_11_X;
290 return ELF::R_HEX_TPREL_32_6_X;
292 return ELF::R_HEX_TPREL_16_X;
294 return ELF::R_HEX_TPREL_11_X;
296 return ELF::R_HEX_23_REG;
298 return ELF::R_HEX_27_REG;
300 return ELF::R_HEX_GD_PLT_B22_PCREL_X;
302 return ELF::R_HEX_GD_PLT_B32_PCREL_X;
304 return ELF::R_HEX_LD_PLT_B22_PCREL_X;
306 return ELF::R_HEX_LD_PLT_B32_PCREL_X;
310std::unique_ptr<MCObjectTargetWriter>
312 return std::make_unique<HexagonELFObjectWriter>(OSABI, CPU);
PowerPC TLS Dynamic Call Fixup
virtual unsigned getRelocType(const MCFixup &Fixup, const MCValue &Target, bool IsPCRel) const =0
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
StringRef - Represent a constant reference to a string, i.e.
Target - Wrapper for Target specific information.
@ C
The default llvm calling convention, compatible with C.
@ fixup_Hexagon_LD_PLT_B32_PCREL_X
@ fixup_Hexagon_GPREL16_3
@ fixup_Hexagon_GD_GOT_HI16
@ fixup_Hexagon_IE_GOT_16_X
@ fixup_Hexagon_LD_PLT_B22_PCREL
@ fixup_Hexagon_TPREL_32_6_X
@ fixup_Hexagon_TPREL_16_X
@ fixup_Hexagon_B7_PCREL_X
@ fixup_Hexagon_B13_PCREL
@ fixup_Hexagon_DTPREL_HI16
@ fixup_Hexagon_DTPMOD_32
@ fixup_Hexagon_IE_GOT_LO16
@ fixup_Hexagon_LD_PLT_B22_PCREL_X
@ fixup_Hexagon_GD_GOT_32_6_X
@ fixup_Hexagon_LD_GOT_HI16
@ fixup_Hexagon_B13_PCREL_X
@ fixup_Hexagon_GOTREL_HI16
@ fixup_Hexagon_IE_GOT_32_6_X
@ fixup_Hexagon_GD_GOT_16
@ fixup_Hexagon_PLT_B22_PCREL
@ fixup_Hexagon_B32_PCREL_X
@ fixup_Hexagon_GD_GOT_16_X
@ fixup_Hexagon_GD_GOT_11_X
@ fixup_Hexagon_DTPREL_32_6_X
@ fixup_Hexagon_GD_GOT_LO16
@ fixup_Hexagon_GD_PLT_B32_PCREL_X
@ fixup_Hexagon_DTPREL_16
@ fixup_Hexagon_DTPREL_11_X
@ fixup_Hexagon_GPREL16_2
@ fixup_Hexagon_GPREL16_1
@ fixup_Hexagon_DTPREL_32
@ fixup_Hexagon_GOTREL_32
@ fixup_Hexagon_DTPREL_LO16
@ fixup_Hexagon_LD_GOT_16_X
@ fixup_Hexagon_B15_PCREL
@ fixup_Hexagon_LD_GOT_16
@ fixup_Hexagon_GPREL16_0
@ fixup_Hexagon_6_PCREL_X
@ fixup_Hexagon_GD_GOT_32
@ fixup_Hexagon_GD_PLT_B22_PCREL_X
@ fixup_Hexagon_GD_PLT_B22_PCREL
@ fixup_Hexagon_IE_GOT_32
@ fixup_Hexagon_B22_PCREL
@ fixup_Hexagon_TPREL_LO16
@ fixup_Hexagon_TPREL_HI16
@ fixup_Hexagon_LD_GOT_32_6_X
@ fixup_Hexagon_IE_GOT_16
@ fixup_Hexagon_LD_GOT_LO16
@ fixup_Hexagon_TPREL_11_X
@ fixup_Hexagon_GOTREL_LO16
@ fixup_Hexagon_IE_GOT_HI16
@ fixup_Hexagon_GOT_32_6_X
@ fixup_Hexagon_LD_GOT_11_X
@ fixup_Hexagon_GOTREL_11_X
@ fixup_Hexagon_DTPREL_16_X
@ fixup_Hexagon_B15_PCREL_X
@ fixup_Hexagon_B22_PCREL_X
@ fixup_Hexagon_IE_32_6_X
@ fixup_Hexagon_IE_GOT_11_X
@ fixup_Hexagon_LD_GOT_32
@ fixup_Hexagon_GOTREL_32_6_X
@ fixup_Hexagon_B9_PCREL_X
@ fixup_Hexagon_GOTREL_16_X
std::variant< std::monostate, Loc::Single, Loc::Multi, Loc::MMI, Loc::EntryValue > Variant
Alias for the std::variant specialization base class of DbgVariable.
This is an optimization pass for GlobalISel generic memory operations.
@ FK_Data_1
A one-byte fixup.
@ FK_Data_4
A four-byte fixup.
@ FK_Data_2
A two-byte fixup.
std::unique_ptr< MCObjectTargetWriter > createHexagonELFObjectWriter(uint8_t OSABI, StringRef CPU)
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)