23 PPCELFObjectWriter(
bool Is64Bit, uint8_t OSABI);
25 virtual ~PPCELFObjectWriter();
31 bool IsPCRel,
bool IsRelocWithSymbol,
32 int64_t Addend)
const;
44 PPCELFObjectWriter::PPCELFObjectWriter(
bool Is64Bit, uint8_t OSABI)
49 PPCELFObjectWriter::~PPCELFObjectWriter() {
52 unsigned PPCELFObjectWriter::getRelocTypeInner(
const MCValue &
Target,
62 switch ((
unsigned)Fixup.
getKind()) {
76 case MCSymbolRefExpr::VK_None:
79 case MCSymbolRefExpr::VK_PPC_LO:
82 case MCSymbolRefExpr::VK_PPC_HI:
85 case MCSymbolRefExpr::VK_PPC_HA:
100 switch ((
unsigned)Fixup.
getKind()) {
111 case MCSymbolRefExpr::VK_None:
114 case MCSymbolRefExpr::VK_PPC_LO:
117 case MCSymbolRefExpr::VK_PPC_HI:
120 case MCSymbolRefExpr::VK_PPC_HA:
123 case MCSymbolRefExpr::VK_PPC_HIGHER:
126 case MCSymbolRefExpr::VK_PPC_HIGHERA:
129 case MCSymbolRefExpr::VK_PPC_HIGHEST:
132 case MCSymbolRefExpr::VK_PPC_HIGHESTA:
135 case MCSymbolRefExpr::VK_GOT:
138 case MCSymbolRefExpr::VK_PPC_GOT_LO:
141 case MCSymbolRefExpr::VK_PPC_GOT_HI:
144 case MCSymbolRefExpr::VK_PPC_GOT_HA:
147 case MCSymbolRefExpr::VK_PPC_TOC:
150 case MCSymbolRefExpr::VK_PPC_TOC_LO:
153 case MCSymbolRefExpr::VK_PPC_TOC_HI:
156 case MCSymbolRefExpr::VK_PPC_TOC_HA:
159 case MCSymbolRefExpr::VK_PPC_TPREL:
162 case MCSymbolRefExpr::VK_PPC_TPREL_LO:
165 case MCSymbolRefExpr::VK_PPC_TPREL_HI:
168 case MCSymbolRefExpr::VK_PPC_TPREL_HA:
171 case MCSymbolRefExpr::VK_PPC_TPREL_HIGHER:
174 case MCSymbolRefExpr::VK_PPC_TPREL_HIGHERA:
177 case MCSymbolRefExpr::VK_PPC_TPREL_HIGHEST:
180 case MCSymbolRefExpr::VK_PPC_TPREL_HIGHESTA:
183 case MCSymbolRefExpr::VK_PPC_DTPREL:
186 case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
189 case MCSymbolRefExpr::VK_PPC_DTPREL_HI:
192 case MCSymbolRefExpr::VK_PPC_DTPREL_HA:
195 case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHER:
198 case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHERA:
201 case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHEST:
204 case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHESTA:
207 case MCSymbolRefExpr::VK_PPC_GOT_TLSGD:
210 case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO:
213 case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
216 case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
219 case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
222 case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
225 case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
228 case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
231 case MCSymbolRefExpr::VK_PPC_GOT_TPREL:
236 case MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO:
241 case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HI:
244 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL:
249 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO:
254 case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HA:
257 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HI:
260 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HA:
268 case MCSymbolRefExpr::VK_None:
271 case MCSymbolRefExpr::VK_PPC_LO:
274 case MCSymbolRefExpr::VK_GOT:
277 case MCSymbolRefExpr::VK_PPC_GOT_LO:
280 case MCSymbolRefExpr::VK_PPC_TOC:
283 case MCSymbolRefExpr::VK_PPC_TOC_LO:
286 case MCSymbolRefExpr::VK_PPC_TPREL:
289 case MCSymbolRefExpr::VK_PPC_TPREL_LO:
292 case MCSymbolRefExpr::VK_PPC_DTPREL:
295 case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
298 case MCSymbolRefExpr::VK_PPC_GOT_TPREL:
301 case MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO:
304 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL:
307 case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO:
315 case MCSymbolRefExpr::VK_PPC_TLSGD:
318 case MCSymbolRefExpr::VK_PPC_TLSLD:
321 case MCSymbolRefExpr::VK_PPC_TLS:
329 case MCSymbolRefExpr::VK_PPC_TOCBASE:
332 case MCSymbolRefExpr::VK_None:
335 case MCSymbolRefExpr::VK_PPC_DTPMOD:
338 case MCSymbolRefExpr::VK_PPC_TPREL:
341 case MCSymbolRefExpr::VK_PPC_DTPREL:
357 unsigned PPCELFObjectWriter::GetRelocType(
const MCValue &Target,
360 bool IsRelocWithSymbol,
361 int64_t Addend)
const {
362 return getRelocTypeInner(Target, Fixup, IsPCRel);
369 bool IsPCRel)
const {
370 assert(Target.
getSymA() &&
"SymA cannot be 0");
378 case MCSymbolRefExpr::VK_GOT:
379 case MCSymbolRefExpr::VK_PPC_GOT_LO:
380 case MCSymbolRefExpr::VK_PPC_GOT_HI:
381 case MCSymbolRefExpr::VK_PPC_GOT_HA:
394 const MCSymbol *PPCELFObjectWriter::undefinedExplicitRelSym(
const MCValue &Target,
396 bool IsPCRel)
const {
397 assert(Target.
getSymA() &&
"SymA cannot be 0");
400 unsigned RelocType = getRelocTypeInner(Target, Fixup, IsPCRel);
409 if (EmitThisSym && !Symbol.isTemporary())
COFF::RelocationTypeX86 Type
A eight-byte pc relative fixup.
const MCSymbol & getSymbol() const
MCObjectWriter * createPPCELFObjectWriter(raw_ostream &OS, bool Is64Bit, uint8_t OSABI)
createPPCELFObjectWriter - Construct an PPC ELF object writer.
#define llvm_unreachable(msg)
bool isAbsolute() const
isAbsolute - Is this an absolute (as opposed to relocatable) value.
MCFixupKind getKind() const
MCObjectWriter * createELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_ostream &OS, bool IsLittleEndian)
Construct a new ELF writer instance.
const MCSymbolRefExpr * getSymA() const
A four-byte pc relative fixup.
const MCSymbol & AliasedSymbol() const
VariantKind getKind() const