25 SparcELFObjectWriter(
bool Is64Bit, uint8_t OSABI)
30 ~SparcELFObjectWriter()
override {}
34 const MCFixup &Fixup,
bool IsPCRel)
const override;
36 bool needsRelocateWithSymbol(
const MCSymbol &Sym,
37 unsigned Type)
const override;
49 return ELF::R_SPARC_DISP32;
53 switch((
unsigned)Fixup.
getKind()) {
56 case FK_Data_1:
return ELF::R_SPARC_DISP8;
57 case FK_Data_2:
return ELF::R_SPARC_DISP16;
58 case FK_Data_4:
return ELF::R_SPARC_DISP32;
59 case FK_Data_8:
return ELF::R_SPARC_DISP64;
69 switch((
unsigned)Fixup.
getKind()) {
113 return ELF::R_SPARC_NONE;
116 bool SparcELFObjectWriter::needsRelocateWithSymbol(
const MCSymbol &Sym,
117 unsigned Type)
const {
126 case ELF::R_SPARC_GOT10:
127 case ELF::R_SPARC_GOT13:
128 case ELF::R_SPARC_GOT22:
129 case ELF::R_SPARC_GOTDATA_HIX22:
130 case ELF::R_SPARC_GOTDATA_LOX10:
131 case ELF::R_SPARC_GOTDATA_OP_HIX22:
132 case ELF::R_SPARC_GOTDATA_OP_LOX10:
137 std::unique_ptr<MCObjectTargetWriter>
139 return llvm::make_unique<SparcELFObjectWriter>(Is64Bit, OSABI);
fixup_sparc_got22 - 22-bit fixup corresponding to got22(foo)
fixup_sparc_13 - 13-bit 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 ...
block Block Frequency true
fixup_sparc_m44 - 10-bit fixup corresponding to m44(foo)
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
fixup_sparc_got10 - 10-bit fixup corresponding to got10(foo)
static unsigned getRelocType(const MCValue &Target, const MCFixupKind FixupKind, const bool IsPCRel)
Translates generic PPC fixup kind to Mach-O/PPC relocation type enum.
Context object for machine code objects.
std::unique_ptr< MCObjectTargetWriter > createSparcELFObjectWriter(bool Is64Bit, uint8_t OSABI)
fixup_sparc_hm - 10-bit fixup corresponding to hm(foo)
fixup_sparc_br19 - 19-bit PC relative relocation for branches on icc/xcc
The instances of the Type class are immutable: once they are created, they are never changed...
fixup_sparc_hh - 22-bit fixup corresponding to hh(foo)
uint32_t getOffset() const
fixup_sparc_l44 - 12-bit fixup corresponding to l44(foo)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
fixup_sparc_lo10 - 10-bit fixup corresponding to lo(foo)
fixup_sparc_got13 - 13-bit fixup corresponding to got13(foo)
Target - Wrapper for Target specific information.
fixup_sparc_pc22 - 22-bit fixup corresponding to pc22(foo)
fixup_sparc_br22 - 22-bit PC relative relocation for branches
const MCExpr * getValue() const
fixups for Thread Local Storage
fixup_sparc_hi22 - 22-bit fixup corresponding to hi(foo) for sethi
fixup_sparc_h44 - 22-bit fixup corresponding to h44(foo)
MCFixupKind getKind() const
fixup_sparc_pc10 - 10-bit fixup corresponding to pc10(foo)