|
LLVM
4.0.0
|
#include <ARMAsmBackendDarwin.h>
Public Member Functions | |
| ARMAsmBackendDarwin (const Target &T, const Triple &TT, const MCRegisterInfo &MRI, MachO::CPUSubTypeARM st) | |
| MCObjectWriter * | createObjectWriter (raw_pwrite_stream &OS) const override |
| Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. More... | |
| uint32_t | generateCompactUnwindEncoding (ArrayRef< MCCFIInstruction > Instrs) const override |
| Generate compact unwind encoding for the function based on the CFI instructions. More... | |
Public Member Functions inherited from llvm::ARMAsmBackend | |
| ARMAsmBackend (const Target &T, const Triple &TT, bool IsLittle) | |
| ~ARMAsmBackend () override | |
| unsigned | getNumFixupKinds () const override |
| Get the number of target specific fixup kinds. More... | |
| bool | hasNOP () const |
| const MCFixupKindInfo & | getFixupKindInfo (MCFixupKind Kind) const override |
| Get information on a fixup kind. More... | |
| void | processFixupValue (const MCAssembler &Asm, const MCAsmLayout &Layout, const MCFixup &Fixup, const MCFragment *DF, const MCValue &Target, uint64_t &Value, bool &IsResolved) override |
| processFixupValue - Target hook to process the literal value of a fixup if necessary. More... | |
| unsigned | adjustFixupValue (const MCFixup &Fixup, uint64_t Value, bool IsPCRel, MCContext *Ctx, bool IsLittleEndian, bool IsResolved) const |
| void | applyFixup (const MCFixup &Fixup, char *Data, unsigned DataSize, uint64_t Value, bool IsPCRel) 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. More... | |
| unsigned | getRelaxedOpcode (unsigned Op) const |
| bool | mayNeedRelaxation (const MCInst &Inst) const override |
| Check whether the given instruction may need relaxation. More... | |
| const char * | reasonForFixupRelaxation (const MCFixup &Fixup, uint64_t Value) const |
| bool | fixupNeedsRelaxation (const MCFixup &Fixup, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const override |
| Simple predicate for targets where !Resolved implies requiring relaxation. More... | |
| void | relaxInstruction (const MCInst &Inst, const MCSubtargetInfo &STI, MCInst &Res) const override |
| Relax the instruction in the given fragment to the next wider instruction. More... | |
| bool | writeNopData (uint64_t Count, MCObjectWriter *OW) const override |
| Write an (optimal) nop sequence of Count bytes to the given output. More... | |
| void | handleAssemblerFlag (MCAssemblerFlag Flag) override |
| Handle any target-specific assembler flags. By default, do nothing. More... | |
| unsigned | getPointerSize () const |
| bool | isThumb () const |
| void | setIsThumb (bool it) |
| bool | isLittle () const |
Public Member Functions inherited from llvm::MCAsmBackend | |
| virtual | ~MCAsmBackend () |
| virtual void | reset () |
| lifetime management More... | |
| virtual unsigned | getMinimumNopSize () const |
| Returns the minimum size of a nop in bytes on this target. More... | |
| virtual void | finishLayout (MCAssembler const &Asm, MCAsmLayout &Layout) const |
| Give backend an opportunity to finish layout after relaxation. More... | |
| virtual Optional< MCFixupKind > | getFixupKind (StringRef Name) const |
| Map a relocation name used in .reloc to a fixup kind. More... | |
| virtual bool | fixupNeedsRelaxationAdvanced (const MCFixup &Fixup, bool Resolved, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const |
| Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. More... | |
Public Attributes | |
| const MachO::CPUSubTypeARM | Subtype |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCAsmBackend | |
| MCAsmBackend () | |
Definition at line 17 of file ARMAsmBackendDarwin.h.
|
inline |
Definition at line 21 of file ARMAsmBackendDarwin.h.
|
inlineoverridevirtual |
Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file.
Implements llvm::MCAsmBackend.
Definition at line 26 of file ARMAsmBackendDarwin.h.
References llvm::MachO::CPU_TYPE_ARM, llvm::createARMMachObjectWriter(), and Subtype.
|
overridevirtual |
Generate compact unwind encoding for the function based on the CFI instructions.
If the CFI instructions describe a frame that cannot be encoded in compact unwind, the method returns UNWIND_ARM_MODE_DWARF which tells the runtime to fallback and unwind using dwarf.
Reimplemented from llvm::MCAsmBackend.
Definition at line 909 of file ARMAsmBackend.cpp.
References contains(), llvm::MachO::CPU_SUBTYPE_ARM_V7K, llvm::dbgs(), DEBUG_WITH_TYPE, llvm::ArrayRef< T >::empty(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::MCRegisterInfo::getLLVMRegNum(), llvm::MCRegisterInfo::getName(), llvm::MCCFIInstruction::getOffset(), llvm::MCCFIInstruction::getOperation(), llvm::MCCFIInstruction::getRegister(), i, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), Offset, llvm::MCCFIInstruction::OpDefCfa, llvm::MCCFIInstruction::OpDefCfaOffset, llvm::MCCFIInstruction::OpDefCfaRegister, llvm::MCCFIInstruction::OpOffset, llvm::MCCFIInstruction::OpRelOffset, R4, R6, llvm::ArrayRef< T >::size(), Subtype, CU::UNWIND_ARM_FRAME_FIRST_PUSH_R4, CU::UNWIND_ARM_FRAME_FIRST_PUSH_R5, CU::UNWIND_ARM_FRAME_FIRST_PUSH_R6, CU::UNWIND_ARM_FRAME_SECOND_PUSH_R10, CU::UNWIND_ARM_FRAME_SECOND_PUSH_R11, CU::UNWIND_ARM_FRAME_SECOND_PUSH_R12, CU::UNWIND_ARM_FRAME_SECOND_PUSH_R8, CU::UNWIND_ARM_FRAME_SECOND_PUSH_R9, CU::UNWIND_ARM_MODE_DWARF, CU::UNWIND_ARM_MODE_FRAME, CU::UNWIND_ARM_MODE_FRAME_D, and CU::UNWIND_ARM_MODE_MASK.
| const MachO::CPUSubTypeARM llvm::ARMAsmBackendDarwin::Subtype |
Definition at line 20 of file ARMAsmBackendDarwin.h.
Referenced by createObjectWriter(), and generateCompactUnwindEncoding().
1.8.6