23 X86ELFObjectWriter(
bool IsELF64, uint8_t OSABI, uint16_t EMachine);
25 ~X86ELFObjectWriter()
override;
29 bool IsPCRel)
const override;
33 X86ELFObjectWriter::X86ELFObjectWriter(
bool IsELF64, uint8_t OSABI,
37 EMachine != ELF::
EM_386) {}
39 X86ELFObjectWriter::~X86ELFObjectWriter()
86 return IsPCRel ? ELF::R_X86_64_PC64 : ELF::R_X86_64_64;
88 return IsPCRel ? ELF::R_X86_64_PC32 : ELF::R_X86_64_32;
90 return ELF::R_X86_64_32S;
92 return IsPCRel ? ELF::R_X86_64_PC16 : ELF::R_X86_64_16;
94 return IsPCRel ? ELF::R_X86_64_PC8 : ELF::R_X86_64_8;
99 return IsPCRel ? ELF::R_X86_64_GOTPC64 : ELF::R_X86_64_GOT64;
101 return IsPCRel ? ELF::R_X86_64_GOTPC32 : ELF::R_X86_64_GOT32;
110 return ELF::R_X86_64_GOTOFF64;
115 return ELF::R_X86_64_TPOFF64;
117 return ELF::R_X86_64_TPOFF32;
127 return ELF::R_X86_64_DTPOFF64;
129 return ELF::R_X86_64_DTPOFF32;
139 return ELF::R_X86_64_SIZE64;
141 return ELF::R_X86_64_SIZE32;
149 return ELF::R_X86_64_TLSGD;
152 return ELF::R_X86_64_GOTTPOFF;
155 return ELF::R_X86_64_TLSLD;
158 return ELF::R_X86_64_PLT32;
161 return ELF::R_X86_64_GOTPCREL;
190 return IsPCRel ? ELF::R_386_PC32 : ELF::R_386_32;
192 return IsPCRel ? ELF::R_386_PC16 : ELF::R_386_16;
194 return IsPCRel ? ELF::R_386_PC8 : ELF::R_386_8;
198 return IsPCRel ? ELF::R_386_GOTPC : ELF::R_386_GOT32;
202 return ELF::R_386_GOTOFF;
206 return ELF::R_386_TLS_LE_32;
210 return ELF::R_386_TLS_LDO_32;
214 return ELF::R_386_TLS_GD;
218 return ELF::R_386_TLS_IE_32;
221 return ELF::R_386_PLT32;
225 return ELF::R_386_TLS_IE;
229 return ELF::R_386_TLS_LE;
233 return ELF::R_386_TLS_GOTIE;
237 return ELF::R_386_TLS_LDM;
241 unsigned X86ELFObjectWriter::GetRelocType(
const MCValue &
Target,
243 bool IsPCRel)
const {
249 assert(getEMachine() ==
ELF::EM_386 &&
"Unsupported ELF machine type.");
254 bool IsELF64, uint8_t OSABI,
257 new X86ELFObjectWriter(IsELF64, OSABI, EMachine);
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)...
A one-byte pc relative fixup.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
static X86_64RelType getType64(unsigned Kind, MCSymbolRefExpr::VariantKind &Modifier, bool &IsPCRel)
The instances of the Type class are immutable: once they are created, they are never changed...
static X86_32RelType getType32(X86_64RelType T)
MCSymbolRefExpr::VariantKind getAccessVariant() const
MCFixupKind getKind() const
PowerPC TLS Dynamic Call Fixup
A two-byte pc relative fixup.
A four-byte pc relative fixup.
static unsigned getRelocType32(MCSymbolRefExpr::VariantKind Modifier, X86_32RelType Type, bool IsPCRel)
MCObjectWriter * createX86ELFObjectWriter(raw_pwrite_stream &OS, bool IsELF64, uint8_t OSABI, uint16_t EMachine)
Construct an X86 ELF object writer.
Target - Wrapper for Target specific information.
MCObjectWriter * createELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS, bool IsLittleEndian)
Construct a new ELF writer instance.
static unsigned getRelocType64(MCSymbolRefExpr::VariantKind Modifier, X86_64RelType Type, bool IsPCRel)
An abstract base class for streams implementations that also support a pwrite operation.
const ARM::ArchExtKind Kind