23 VEELFObjectWriter(uint8_t OSABI)
27 ~VEELFObjectWriter()
override {}
31 const MCFixup &Fixup,
bool IsPCRel)
const override;
33 bool needsRelocateWithSymbol(
const MCSymbol &Sym,
34 unsigned Type)
const override;
41 if (
const VEMCExpr *SExpr = dyn_cast<VEMCExpr>(
Fixup.getValue())) {
43 return ELF::R_VE_PC_LO32;
47 switch (
Fixup.getTargetKind()) {
56 return ELF::R_VE_REFLONG;
58 return ELF::R_VE_REFQUAD;
60 return ELF::R_VE_PC_HI32;
62 return ELF::R_VE_PC_LO32;
66 switch (
Fixup.getTargetKind()) {
74 return ELF::R_VE_REFLONG;
76 return ELF::R_VE_REFQUAD;
78 return ELF::R_VE_REFLONG;
80 return ELF::R_VE_HI32;
82 return ELF::R_VE_LO32;
88 return ELF::R_VE_GOT_HI32;
90 return ELF::R_VE_GOT_LO32;
92 return ELF::R_VE_GOTOFF_HI32;
94 return ELF::R_VE_GOTOFF_LO32;
96 return ELF::R_VE_PLT_HI32;
98 return ELF::R_VE_PLT_LO32;
100 return ELF::R_VE_TLS_GD_HI32;
102 return ELF::R_VE_TLS_GD_LO32;
104 return ELF::R_VE_TPOFF_HI32;
106 return ELF::R_VE_TPOFF_LO32;
109 return ELF::R_VE_NONE;
112 bool VEELFObjectWriter::needsRelocateWithSymbol(
const MCSymbol &Sym,
113 unsigned Type)
const {
122 case ELF::R_VE_GOT_HI32:
123 case ELF::R_VE_GOT_LO32:
124 case ELF::R_VE_GOTOFF_HI32:
125 case ELF::R_VE_GOTOFF_LO32:
126 case ELF::R_VE_TLS_GD_HI32:
127 case ELF::R_VE_TLS_GD_LO32:
132 std::unique_ptr<MCObjectTargetWriter>
134 return std::make_unique<VEELFObjectWriter>(OSABI);
A eight-byte pc relative fixup.
This class represents lattice values for constants.
This represents an "assembler immediate".
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
fixup_ve_reflong - 32-bit fixup corresponding to foo
fixup_ve_pc_hi32 - 32-bit fixup corresponding to foo@pc_hi
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
A one-byte pc relative fixup.
Context object for machine code objects.
fixup_ve_gotoff_lo32 - 32-bit fixup corresponding to foo@gotoff_lo
fixups for Thread Local Storage
fixup_ve_lo32 - 32-bit fixup corresponding to foo@lo
The instances of the Type class are immutable: once they are created, they are never changed.
fixup_ve_got_lo32 - 32-bit fixup corresponding to foo@got_lo
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
PowerPC TLS Dynamic Call Fixup
fixup_ve_gotoff_hi32 - 32-bit fixup corresponding to foo@gotoff_hi
A two-byte pc relative fixup.
A four-byte pc relative fixup.
fixup_ve_got_hi32 - 32-bit fixup corresponding to foo@got_hi
Target - Wrapper for Target specific information.
fixup_ve_hi32 - 32-bit fixup corresponding to foo@hi
fixup_ve_pc_lo32 - 32-bit fixup corresponding to foo@pc_lo
std::unique_ptr< MCObjectTargetWriter > createVEELFObjectWriter(uint8_t OSABI)