LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::MCAsmBackend Class Referenceabstract

MCAsmBackend - Generic interface to target specific assembler backends. More...

#include <MCAsmBackend.h>

Collaboration diagram for llvm::MCAsmBackend:
Collaboration graph
[legend]

Public Member Functions

virtual ~MCAsmBackend ()
 
virtual void reset ()
 lifetime management More...
 
virtual MCObjectWritercreateObjectWriter (raw_ostream &OS) const =0
 
virtual MCELFObjectTargetWritercreateELFObjectTargetWriter () const
 
bool hasReliableSymbolDifference () const
 
bool hasDataInCodeSupport () const
 
virtual bool doesSectionRequireSymbols (const MCSection &Section) const
 
virtual bool isSectionAtomizable (const MCSection &Section) const
 
virtual void applyFixup (const MCFixup &Fixup, char *Data, unsigned DataSize, uint64_t Value) const =0
 
virtual unsigned getMinimumNopSize () const
 
virtual bool writeNopData (uint64_t Count, MCObjectWriter *OW) const =0
 
virtual void handleAssemblerFlag (MCAssemblerFlag Flag)
 
virtual uint32_t generateCompactUnwindEncoding (ArrayRef< MCCFIInstruction >) const
 Generate the compact unwind encoding for the CFI instructions. More...
 
Target Fixup Interfaces
virtual unsigned getNumFixupKinds () const =0
 getNumFixupKinds - Get the number of target specific fixup kinds. More...
 
virtual const MCFixupKindInfogetFixupKindInfo (MCFixupKind Kind) const
 getFixupKindInfo - Get information on a fixup kind. More...
 
virtual void processFixupValue (const MCAssembler &Asm, const MCAsmLayout &Layout, const MCFixup &Fixup, const MCFragment *DF, MCValue &Target, uint64_t &Value, bool &IsResolved)
 
Target Relaxation Interfaces
virtual bool mayNeedRelaxation (const MCInst &Inst) const =0
 
virtual bool fixupNeedsRelaxation (const MCFixup &Fixup, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const =0
 
virtual void relaxInstruction (const MCInst &Inst, MCInst &Res) const =0
 

Protected Member Functions

 MCAsmBackend ()
 

Protected Attributes

unsigned HasReliableSymbolDifference: 1
 
unsigned HasDataInCodeSupport: 1
 

Detailed Description

MCAsmBackend - Generic interface to target specific assembler backends.

Definition at line 34 of file MCAsmBackend.h.

Constructor & Destructor Documentation

MCAsmBackend::MCAsmBackend ( )
protected

Definition at line 15 of file MCAsmBackend.cpp.

MCAsmBackend::~MCAsmBackend ( )
virtual

Definition at line 18 of file MCAsmBackend.cpp.

Member Function Documentation

virtual void llvm::MCAsmBackend::applyFixup ( const MCFixup Fixup,
char *  Data,
unsigned  DataSize,
uint64_t  Value 
) const
pure virtual

applyFixup - 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.

Referenced by llvm::MCAssembler::Finish().

virtual MCELFObjectTargetWriter* llvm::MCAsmBackend::createELFObjectTargetWriter ( ) const
inlinevirtual

createELFObjectTargetWriter - Create a new ELFObjectTargetWriter to enable non-standard ELFObjectWriters.

Definition at line 56 of file MCAsmBackend.h.

References llvm_unreachable.

virtual MCObjectWriter* llvm::MCAsmBackend::createObjectWriter ( raw_ostream OS) const
pure virtual

createObjectWriter - Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file.

virtual bool llvm::MCAsmBackend::doesSectionRequireSymbols ( const MCSection Section) const
inlinevirtual

doesSectionRequireSymbols - Check whether the given section requires that all symbols (even temporaries) have symbol table entries.

Definition at line 81 of file MCAsmBackend.h.

Referenced by llvm::MCAssembler::isSymbolLinkerVisible().

virtual bool llvm::MCAsmBackend::fixupNeedsRelaxation ( const MCFixup Fixup,
uint64_t  Value,
const MCRelaxableFragment DF,
const MCAsmLayout Layout 
) const
pure virtual

fixupNeedsRelaxation - Target specific predicate for whether a given fixup requires the associated instruction to be relaxed.

virtual uint32_t llvm::MCAsmBackend::generateCompactUnwindEncoding ( ArrayRef< MCCFIInstruction ) const
inlinevirtual

Generate the compact unwind encoding for the CFI instructions.

Definition at line 166 of file MCAsmBackend.h.

Referenced by llvm::MCStreamer::generateCompactUnwindEncodings().

const MCFixupKindInfo & MCAsmBackend::getFixupKindInfo ( MCFixupKind  Kind) const
virtual

getFixupKindInfo - Get information on a fixup kind.

Definition at line 21 of file MCAsmBackend.cpp.

References llvm::array_lengthof(), and llvm::MCFixupKindInfo::FKF_IsPCRel.

Referenced by llvm::MachObjectWriter::isFixupKindPCRel().

virtual unsigned llvm::MCAsmBackend::getMinimumNopSize ( ) const
inlinevirtual

getMinimumNopSize - Returns the minimum size of a nop in bytes on this target. The assembler will use this to emit excess padding in situations where the padding required for simple alignment would be less than the minimum nop size.

Definition at line 151 of file MCAsmBackend.h.

Referenced by llvm::MCAssembler::computeFragmentSize().

virtual unsigned llvm::MCAsmBackend::getNumFixupKinds ( ) const
pure virtual

getNumFixupKinds - Get the number of target specific fixup kinds.

virtual void llvm::MCAsmBackend::handleAssemblerFlag ( MCAssemblerFlag  Flag)
inlinevirtual

handleAssemblerFlag - Handle any target-specific assembler flags. By default, do nothing.

Definition at line 162 of file MCAsmBackend.h.

bool llvm::MCAsmBackend::hasDataInCodeSupport ( ) const
inline

hasDataInCodeSupport - Check whether this target implements data-in-code markers. If not, data region directives will be ignored.

Definition at line 77 of file MCAsmBackend.h.

References HasDataInCodeSupport.

bool llvm::MCAsmBackend::hasReliableSymbolDifference ( ) const
inline

hasReliableSymbolDifference - Check whether this target implements accurate relocations for differences between symbols. If not, differences between symbols will always be relocatable expressions and any references to temporary symbols will be assumed to be in the same atom, unless they reside in a different section.

This should always be true (since it results in fewer relocations with no loss of functionality), but is currently supported as a way to maintain exact object compatibility with Darwin 'as' (on non-x86_64). It should eventually should be eliminated.

Definition at line 71 of file MCAsmBackend.h.

References HasReliableSymbolDifference.

Referenced by llvm::MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl().

virtual bool llvm::MCAsmBackend::isSectionAtomizable ( const MCSection Section) const
inlinevirtual

isSectionAtomizable - Check whether the given section can be split into atoms.

See Also
MCAssembler::isSymbolLinkerVisible().

Definition at line 89 of file MCAsmBackend.h.

Referenced by llvm::MCAssembler::getAtom().

virtual bool llvm::MCAsmBackend::mayNeedRelaxation ( const MCInst Inst) const
pure virtual

mayNeedRelaxation - Check whether the given instruction may need relaxation.

Parameters
Inst- The instruction to test.

Referenced by llvm::MCObjectStreamer::EmitInstruction().

virtual void llvm::MCAsmBackend::processFixupValue ( const MCAssembler Asm,
const MCAsmLayout Layout,
const MCFixup Fixup,
const MCFragment DF,
MCValue Target,
uint64_t &  Value,
bool IsResolved 
)
inlinevirtual

processFixupValue - Target hook to adjust the literal value of a fixup if necessary. IsResolved signals whether the caller believes a relocation is needed; the target can modify the value. The default does nothing.

Definition at line 105 of file MCAsmBackend.h.

virtual void llvm::MCAsmBackend::relaxInstruction ( const MCInst Inst,
MCInst Res 
) const
pure virtual

RelaxInstruction - Relax the instruction in the given fragment to the next wider instruction.

Parameters
InstThe instruction to relax, which may be the same as the output.
[out]ResOn return, the relaxed instruction.

Referenced by llvm::MCObjectStreamer::EmitInstruction().

virtual void llvm::MCAsmBackend::reset ( )
inlinevirtual

lifetime management

Definition at line 48 of file MCAsmBackend.h.

Referenced by llvm::LLVMTargetMachine::addPassesToEmitFile(), and llvm::MCAssembler::reset().

virtual bool llvm::MCAsmBackend::writeNopData ( uint64_t  Count,
MCObjectWriter OW 
) const
pure virtual

writeNopData - Write an (optimal) nop sequence of Count bytes to the given output. If the target cannot generate such a sequence, it should return an error.

Returns
- True on success.

Referenced by writeFragment().

Member Data Documentation

unsigned llvm::MCAsmBackend::HasDataInCodeSupport
protected

Definition at line 42 of file MCAsmBackend.h.

Referenced by hasDataInCodeSupport().

unsigned llvm::MCAsmBackend::HasReliableSymbolDifference
protected

Definition at line 41 of file MCAsmBackend.h.

Referenced by hasReliableSymbolDifference().


The documentation for this class was generated from the following files: