23 X86ELFObjectWriter(
bool IsELF64, uint8_t OSABI, uint16_t EMachine);
25 virtual ~X86ELFObjectWriter();
28 bool IsPCRel,
bool IsRelocWithSymbol,
29 int64_t Addend)
const;
33 X86ELFObjectWriter::X86ELFObjectWriter(
bool IsELF64, uint8_t OSABI,
37 EMachine != ELF::
EM_386) {}
39 X86ELFObjectWriter::~X86ELFObjectWriter()
42 unsigned X86ELFObjectWriter::GetRelocType(
const MCValue &
Target,
45 bool IsRelocWithSymbol,
46 int64_t Addend)
const {
54 switch ((
unsigned)Fixup.
getKind()) {
62 assert(Modifier == MCSymbolRefExpr::VK_None);
72 case MCSymbolRefExpr::VK_None:
75 case MCSymbolRefExpr::VK_PLT:
78 case MCSymbolRefExpr::VK_GOTPCREL:
81 case MCSymbolRefExpr::VK_GOTTPOFF:
84 case MCSymbolRefExpr::VK_TLSGD:
87 case MCSymbolRefExpr::VK_TLSLD:
93 assert(Modifier == MCSymbolRefExpr::VK_None);
97 assert(Modifier == MCSymbolRefExpr::VK_None);
102 switch ((
unsigned)Fixup.
getKind()) {
108 case MCSymbolRefExpr::VK_None:
111 case MCSymbolRefExpr::VK_GOT:
114 case MCSymbolRefExpr::VK_GOTOFF:
117 case MCSymbolRefExpr::VK_TPOFF:
120 case MCSymbolRefExpr::VK_DTPOFF:
129 case MCSymbolRefExpr::VK_None:
132 case MCSymbolRefExpr::VK_GOT:
135 case MCSymbolRefExpr::VK_GOTPCREL:
138 case MCSymbolRefExpr::VK_TPOFF:
141 case MCSymbolRefExpr::VK_DTPOFF:
156 switch ((
unsigned)Fixup.
getKind()) {
169 case MCSymbolRefExpr::VK_None:
172 case MCSymbolRefExpr::VK_PLT:
179 switch ((
unsigned)Fixup.
getKind()) {
194 case MCSymbolRefExpr::VK_None:
197 case MCSymbolRefExpr::VK_GOT:
200 case MCSymbolRefExpr::VK_GOTOFF:
203 case MCSymbolRefExpr::VK_TLSGD:
206 case MCSymbolRefExpr::VK_TPOFF:
209 case MCSymbolRefExpr::VK_INDNTPOFF:
212 case MCSymbolRefExpr::VK_NTPOFF:
215 case MCSymbolRefExpr::VK_GOTNTPOFF:
218 case MCSymbolRefExpr::VK_TLSLDM:
221 case MCSymbolRefExpr::VK_DTPOFF:
224 case MCSymbolRefExpr::VK_GOTTPOFF:
245 new X86ELFObjectWriter(IsELF64, OSABI, EMachine);
COFF::RelocationTypeX86 Type
A eight-byte pc relative fixup.
A one-byte pc relative fixup.
#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.
A two-byte pc relative fixup.
const MCSymbolRefExpr * getSymA() const
A four-byte pc relative fixup.
MCObjectWriter * createX86ELFObjectWriter(raw_ostream &OS, bool IsELF64, uint8_t OSABI, uint16_t EMachine)
createX86ELFObjectWriter - Construct an X86 ELF object writer.
VariantKind getKind() const