17 #define DEBUG_TYPE "hexagon-elf-writer"
20 using namespace Hexagon;
29 HexagonELFObjectWriter(uint8_t OSABI,
StringRef C);
32 bool IsPCRel)
const override;
36 HexagonELFObjectWriter::HexagonELFObjectWriter(uint8_t OSABI,
StringRef C)
41 unsigned HexagonELFObjectWriter::GetRelocType(
MCValue const & ,
44 switch ((
unsigned)Fixup.
getKind()) {
48 return ELF::R_HEX_NONE;
50 return (IsPCRel) ? ELF::R_HEX_32_PCREL : ELF::R_HEX_32;
52 return ELF::R_HEX_32_PCREL;
58 return ELF::R_HEX_B22_PCREL;
60 return ELF::R_HEX_B15_PCREL;
62 return ELF::R_HEX_B7_PCREL;
64 return ELF::R_HEX_LO16;
66 return ELF::R_HEX_HI16;
74 return ELF::R_HEX_GPREL16_0;
76 return ELF::R_HEX_GPREL16_1;
78 return ELF::R_HEX_GPREL16_2;
80 return ELF::R_HEX_GPREL16_3;
82 return ELF::R_HEX_HL16;
84 return ELF::R_HEX_B13_PCREL;
86 return ELF::R_HEX_B9_PCREL;
88 return ELF::R_HEX_B32_PCREL_X;
90 return ELF::R_HEX_32_6_X;
92 return ELF::R_HEX_B22_PCREL_X;
94 return ELF::R_HEX_B15_PCREL_X;
96 return ELF::R_HEX_B13_PCREL_X;
98 return ELF::R_HEX_B9_PCREL_X;
100 return ELF::R_HEX_B7_PCREL_X;
102 return ELF::R_HEX_16_X;
104 return ELF::R_HEX_12_X;
106 return ELF::R_HEX_11_X;
108 return ELF::R_HEX_10_X;
110 return ELF::R_HEX_9_X;
112 return ELF::R_HEX_8_X;
114 return ELF::R_HEX_7_X;
116 return ELF::R_HEX_6_X;
118 return ELF::R_HEX_32_PCREL;
120 return ELF::R_HEX_COPY;
122 return ELF::R_HEX_GLOB_DAT;
124 return ELF::R_HEX_JMP_SLOT;
126 return ELF::R_HEX_RELATIVE;
128 return ELF::R_HEX_PLT_B22_PCREL;
130 return ELF::R_HEX_GOTREL_LO16;
132 return ELF::R_HEX_GOTREL_HI16;
134 return ELF::R_HEX_GOTREL_32;
136 return ELF::R_HEX_GOT_LO16;
138 return ELF::R_HEX_GOT_HI16;
140 return ELF::R_HEX_GOT_32;
142 return ELF::R_HEX_GOT_16;
144 return ELF::R_HEX_DTPMOD_32;
146 return ELF::R_HEX_DTPREL_LO16;
148 return ELF::R_HEX_DTPREL_HI16;
150 return ELF::R_HEX_DTPREL_32;
152 return ELF::R_HEX_DTPREL_16;
154 return ELF::R_HEX_GD_PLT_B22_PCREL;
156 return ELF::R_HEX_LD_PLT_B22_PCREL;
158 return ELF::R_HEX_GD_GOT_LO16;
160 return ELF::R_HEX_GD_GOT_HI16;
162 return ELF::R_HEX_GD_GOT_32;
164 return ELF::R_HEX_GD_GOT_16;
166 return ELF::R_HEX_LD_GOT_LO16;
168 return ELF::R_HEX_LD_GOT_HI16;
170 return ELF::R_HEX_LD_GOT_32;
172 return ELF::R_HEX_LD_GOT_16;
174 return ELF::R_HEX_IE_LO16;
176 return ELF::R_HEX_IE_HI16;
178 return ELF::R_HEX_IE_32;
180 return ELF::R_HEX_IE_GOT_LO16;
182 return ELF::R_HEX_IE_GOT_HI16;
184 return ELF::R_HEX_IE_GOT_32;
186 return ELF::R_HEX_IE_GOT_16;
188 return ELF::R_HEX_TPREL_LO16;
190 return ELF::R_HEX_TPREL_HI16;
192 return ELF::R_HEX_TPREL_32;
194 return ELF::R_HEX_TPREL_16;
196 return ELF::R_HEX_6_PCREL_X;
198 return ELF::R_HEX_GOTREL_32_6_X;
200 return ELF::R_HEX_GOTREL_16_X;
202 return ELF::R_HEX_GOTREL_11_X;
204 return ELF::R_HEX_GOT_32_6_X;
206 return ELF::R_HEX_GOT_16_X;
208 return ELF::R_HEX_GOT_11_X;
210 return ELF::R_HEX_DTPREL_32_6_X;
212 return ELF::R_HEX_DTPREL_16_X;
214 return ELF::R_HEX_DTPREL_11_X;
216 return ELF::R_HEX_GD_GOT_32_6_X;
218 return ELF::R_HEX_GD_GOT_16_X;
220 return ELF::R_HEX_GD_GOT_11_X;
222 return ELF::R_HEX_LD_GOT_32_6_X;
224 return ELF::R_HEX_LD_GOT_16_X;
226 return ELF::R_HEX_LD_GOT_11_X;
228 return ELF::R_HEX_IE_32_6_X;
230 return ELF::R_HEX_IE_16_X;
232 return ELF::R_HEX_IE_GOT_32_6_X;
234 return ELF::R_HEX_IE_GOT_16_X;
236 return ELF::R_HEX_IE_GOT_11_X;
238 return ELF::R_HEX_TPREL_32_6_X;
240 return ELF::R_HEX_TPREL_16_X;
242 return ELF::R_HEX_TPREL_11_X;
This represents an "assembler immediate".
Defines the object file and target independent interfaces used by the assembler backend to write nati...
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
MCObjectWriter * createHexagonELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI, StringRef CPU)
MCFixupKind getKind() const
PowerPC TLS Dynamic Call Fixup
A four-byte pc relative fixup.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Target - Wrapper for Target specific information.
MCObjectWriter * createELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS, bool IsLittleEndian)
Construct a new ELF writer instance.
An abstract base class for streams implementations that also support a pwrite operation.
StringRef - Represent a constant reference to a string, i.e.