LLVM 20.0.0git
|
#include "Target/ARM/MCTargetDesc/ARMAsmBackendELF.h"
Public Member Functions | |
ARMAsmBackendELF (const Target &T, bool isThumb, uint8_t OSABI, llvm::endianness Endian) | |
std::unique_ptr< MCObjectTargetWriter > | createObjectTargetWriter () const override |
std::optional< MCFixupKind > | getFixupKind (StringRef Name) const override |
Map a relocation name used in .reloc to a fixup kind. | |
Public Member Functions inherited from llvm::ARMAsmBackend | |
ARMAsmBackend (const Target &T, bool isThumb, llvm::endianness Endian) | |
unsigned | getNumFixupKinds () const override |
Get the number of target specific fixup kinds. | |
bool | hasNOP (const MCSubtargetInfo *STI) const |
std::optional< MCFixupKind > | getFixupKind (StringRef Name) const override |
Map a relocation name used in .reloc to a fixup kind. | |
const MCFixupKindInfo & | getFixupKindInfo (MCFixupKind Kind) const override |
Get information on a fixup kind. | |
bool | shouldForceRelocation (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, const MCSubtargetInfo *STI) override |
Hook to check if a relocation is needed for some target specific reason. | |
unsigned | adjustFixupValue (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, uint64_t Value, bool IsResolved, MCContext &Ctx, const MCSubtargetInfo *STI) const |
void | applyFixup (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, MutableArrayRef< char > Data, uint64_t Value, bool IsResolved, const MCSubtargetInfo *STI) const override |
Apply the Value for given Fixup into the provided data fragment, at the offset specified by the fixup and following the fixup kind as appropriate. | |
unsigned | getRelaxedOpcode (unsigned Op, const MCSubtargetInfo &STI) const |
bool | mayNeedRelaxation (const MCInst &Inst, const MCSubtargetInfo &STI) const override |
Check whether the given instruction may need relaxation. | |
const char * | reasonForFixupRelaxation (const MCFixup &Fixup, uint64_t Value) const |
bool | fixupNeedsRelaxation (const MCFixup &Fixup, uint64_t Value) const override |
Simple predicate for targets where !Resolved implies requiring relaxation. | |
void | relaxInstruction (MCInst &Inst, const MCSubtargetInfo &STI) const override |
Relax the instruction in the given fragment to the next wider instruction. | |
bool | writeNopData (raw_ostream &OS, uint64_t Count, const MCSubtargetInfo *STI) const override |
Write an (optimal) nop sequence of Count bytes to the given output. | |
void | handleAssemblerFlag (MCAssemblerFlag Flag) override |
Handle any target-specific assembler flags. By default, do nothing. | |
unsigned | getPointerSize () const |
bool | isThumb () const |
void | setIsThumb (bool it) |
Public Member Functions inherited from llvm::MCAsmBackend | |
MCAsmBackend (const MCAsmBackend &)=delete | |
MCAsmBackend & | operator= (const MCAsmBackend &)=delete |
virtual | ~MCAsmBackend () |
bool | allowLinkerRelaxation () const |
virtual bool | allowAutoPadding () const |
Return true if this target might automatically pad instructions and thus need to emit padding enable/disable directives around sensative code. | |
virtual bool | allowEnhancedRelaxation () const |
Return true if this target allows an unrelaxable instruction to be emitted into RelaxableFragment and then we can increase its size in a tricky way for optimization. | |
virtual void | reset () |
lifetime management | |
std::unique_ptr< MCObjectWriter > | createObjectWriter (raw_pwrite_stream &OS) const |
Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. | |
std::unique_ptr< MCObjectWriter > | createDwoObjectWriter (raw_pwrite_stream &OS, raw_pwrite_stream &DwoOS) const |
Create an MCObjectWriter that writes two object files: a .o file which is linked into the final program and a .dwo file which is used by debuggers. | |
virtual std::unique_ptr< MCObjectTargetWriter > | createObjectTargetWriter () const =0 |
virtual unsigned | getMinimumNopSize () const |
Returns the minimum size of a nop in bytes on this target. | |
virtual unsigned | getMaximumNopSize (const MCSubtargetInfo &STI) const |
Returns the maximum size of a nop in bytes on this target. | |
virtual bool | writeNopData (raw_ostream &OS, uint64_t Count, const MCSubtargetInfo *STI) const =0 |
Write an (optimal) nop sequence of Count bytes to the given output. | |
virtual void | finishLayout (MCAssembler const &Asm) const |
Give backend an opportunity to finish layout after relaxation. | |
virtual void | handleAssemblerFlag (MCAssemblerFlag Flag) |
Handle any target-specific assembler flags. By default, do nothing. | |
virtual uint64_t | generateCompactUnwindEncoding (const MCDwarfFrameInfo *FI, const MCContext *Ctxt) const |
Generate the compact unwind encoding for the CFI instructions. | |
virtual bool | isMicroMips (const MCSymbol *Sym) const |
Check whether a given symbol has been flagged with MICROMIPS flag. | |
bool | isDarwinCanonicalPersonality (const MCSymbol *Sym) const |
virtual bool | shouldInsertExtraNopBytesForCodeAlign (const MCAlignFragment &AF, unsigned &Size) |
Hook to check if extra nop bytes must be inserted for alignment directive. | |
virtual bool | shouldInsertFixupForCodeAlign (MCAssembler &Asm, MCAlignFragment &AF) |
Hook which indicates if the target requires a fixup to be generated when handling an align directive in an executable section. | |
virtual bool | evaluateTargetFixup (const MCAssembler &Asm, const MCFixup &Fixup, const MCFragment *DF, const MCValue &Target, const MCSubtargetInfo *STI, uint64_t &Value, bool &WasForced) |
virtual bool | handleAddSubRelocations (const MCAssembler &Asm, const MCFragment &F, const MCFixup &Fixup, const MCValue &Target, uint64_t &FixedValue) const |
virtual bool | fixupNeedsRelaxationAdvanced (const MCAssembler &Asm, const MCFixup &Fixup, bool Resolved, uint64_t Value, const MCRelaxableFragment *DF, const bool WasForced) const |
Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. | |
virtual bool | relaxDwarfLineAddr (const MCAssembler &Asm, MCDwarfLineAddrFragment &DF, bool &WasRelaxed) const |
virtual bool | relaxDwarfCFA (const MCAssembler &Asm, MCDwarfCallFrameFragment &DF, bool &WasRelaxed) const |
virtual std::pair< bool, bool > | relaxLEB128 (const MCAssembler &Asm, MCLEBFragment &LF, int64_t &Value) const |
Public Attributes | |
uint8_t | OSABI |
Public Attributes inherited from llvm::MCAsmBackend | |
const llvm::endianness | Endian |
const unsigned | RelaxFixupKind |
Fixup kind used for linker relaxation. | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCAsmBackend | |
MCAsmBackend (llvm::endianness Endian, unsigned RelaxFixupKind=MaxFixupKind) | |
Definition at line 17 of file ARMAsmBackendELF.h.
|
inline |
Definition at line 20 of file ARMAsmBackendELF.h.
|
inlineoverridevirtual |
Implements llvm::MCAsmBackend.
Definition at line 25 of file ARMAsmBackendELF.h.
References llvm::createARMELFObjectWriter(), and OSABI.
|
overridevirtual |
Map a relocation name used in .reloc to a fixup kind.
Reimplemented from llvm::ARMAsmBackend.
Definition at line 54 of file ARMAsmBackend.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::FirstLiteralRelocationKind, and Name.
uint8_t llvm::ARMAsmBackendELF::OSABI |
Definition at line 19 of file ARMAsmBackendELF.h.
Referenced by createObjectTargetWriter().