|
LLVM
4.0.0
|
#include <ARMAsmBackend.h>
Public Member Functions | |
| 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 MCObjectWriter * | createObjectWriter (raw_pwrite_stream &OS) const =0 |
| Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. 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 uint32_t | generateCompactUnwindEncoding (ArrayRef< MCCFIInstruction >) const |
| Generate the compact unwind encoding for the CFI instructions. 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... | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCAsmBackend | |
| MCAsmBackend () | |
Definition at line 21 of file ARMAsmBackend.h.
Definition at line 26 of file ARMAsmBackend.h.
|
inlineoverride |
Definition at line 31 of file ARMAsmBackend.h.
| unsigned ARMAsmBackend::adjustFixupValue | ( | const MCFixup & | Fixup, |
| uint64_t | Value, | ||
| bool | IsPCRel, | ||
| MCContext * | Ctx, | ||
| bool | IsLittleEndian, | ||
| bool | IsResolved | ||
| ) | const |
Definition at line 359 of file ARMAsmBackend.cpp.
References llvm::ARM::fixup_arm_adr_pcrel_12, llvm::ARM::fixup_arm_blx, llvm::ARM::fixup_arm_condbl, llvm::ARM::fixup_arm_condbranch, llvm::ARM::fixup_arm_ldst_pcrel_12, llvm::ARM::fixup_arm_mod_imm, llvm::ARM::fixup_arm_movt_hi16, llvm::ARM::fixup_arm_movw_lo16, llvm::ARM::fixup_arm_pcrel_10, llvm::ARM::fixup_arm_pcrel_10_unscaled, llvm::ARM::fixup_arm_pcrel_9, llvm::ARM::fixup_arm_thumb_bcc, llvm::ARM::fixup_arm_thumb_bl, llvm::ARM::fixup_arm_thumb_blx, llvm::ARM::fixup_arm_thumb_br, llvm::ARM::fixup_arm_thumb_cb, llvm::ARM::fixup_arm_thumb_cp, llvm::ARM::fixup_arm_uncondbl, llvm::ARM::fixup_arm_uncondbranch, llvm::ARM::fixup_t2_adr_pcrel_12, llvm::ARM::fixup_t2_condbranch, llvm::ARM::fixup_t2_ldst_pcrel_12, llvm::ARM::fixup_t2_movt_hi16, llvm::ARM::fixup_t2_movw_lo16, llvm::ARM::fixup_t2_pcrel_10, llvm::ARM::fixup_t2_pcrel_9, llvm::ARM::fixup_t2_uncondbranch, llvm::ARM::fixup_thumb_adr_pcrel_10, llvm::FK_Data_1, llvm::FK_Data_2, llvm::FK_Data_4, llvm::FK_SecRel_2, llvm::FK_SecRel_4, llvm::MCSubtargetInfo::getFeatureBits(), llvm::MCFixup::getKind(), llvm::MCFixup::getLoc(), llvm::ARM_AM::getSOImmVal(), llvm::MCFixup::getValue(), I, i, joinHalfWords(), Kind, LLVM_FALLTHROUGH, llvm_unreachable, reasonForFixupRelaxation(), llvm::MCContext::reportError(), swapHalfWords(), and llvm::MCSymbolRefExpr::VK_TLSCALL.
Referenced by applyFixup(), and processFixupValue().
|
overridevirtual |
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.
Implements llvm::MCAsmBackend.
Definition at line 848 of file ARMAsmBackend.cpp.
References adjustFixupValue(), assert(), getFixupKindContainerSizeBytes(), getFixupKindNumBytes(), llvm::MCFixup::getKind(), llvm::MCFixup::getOffset(), i, and Offset.
|
overridevirtual |
Simple predicate for targets where !Resolved implies requiring relaxation.
Implements llvm::MCAsmBackend.
Definition at line 255 of file ARMAsmBackend.cpp.
References reasonForFixupRelaxation().
|
overridevirtual |
Get information on a fixup kind.
Reimplemented from llvm::MCAsmBackend.
Definition at line 51 of file ARMAsmBackend.cpp.
References assert(), llvm::FirstTargetFixupKind, llvm::MCFixupKindInfo::FKF_IsAlignedDownTo32Bits, llvm::MCFixupKindInfo::FKF_IsPCRel, llvm::MCAsmBackend::getFixupKindInfo(), getNumFixupKinds(), and llvm::ARM::NumTargetFixupKinds.
|
inlineoverridevirtual |
Get the number of target specific fixup kinds.
Implements llvm::MCAsmBackend.
Definition at line 33 of file ARMAsmBackend.h.
References llvm::ARM::NumTargetFixupKinds.
Referenced by getFixupKindInfo().
|
inline |
Definition at line 73 of file ARMAsmBackend.h.
Definition at line 174 of file ARMAsmBackend.cpp.
References llvm::MCSubtargetInfo::getFeatureBits().
Referenced by mayNeedRelaxation(), and relaxInstruction().
|
overridevirtual |
Handle any target-specific assembler flags. By default, do nothing.
Reimplemented from llvm::MCAsmBackend.
Definition at line 161 of file ARMAsmBackend.cpp.
References llvm::MCAF_Code16, llvm::MCAF_Code32, and setIsThumb().
|
inline |
Definition at line 37 of file ARMAsmBackend.h.
References llvm::MCSubtargetInfo::getFeatureBits().
Referenced by writeNopData().
|
inline |
Definition at line 76 of file ARMAsmBackend.h.
|
inline |
Definition at line 74 of file ARMAsmBackend.h.
Referenced by writeNopData().
Check whether the given instruction may need relaxation.
| Inst | - The instruction to test. |
Implements llvm::MCAsmBackend.
Definition at line 196 of file ARMAsmBackend.cpp.
References llvm::MCInst::getOpcode(), and getRelaxedOpcode().
|
overridevirtual |
processFixupValue - Target hook to process the literal value of a fixup if necessary.
Reimplemented from llvm::MCAsmBackend.
Definition at line 698 of file ARMAsmBackend.cpp.
References A, adjustFixupValue(), assert(), llvm::ARM::fixup_arm_blx, llvm::ARM::fixup_arm_condbl, llvm::ARM::fixup_arm_movt_hi16, llvm::ARM::fixup_arm_movw_lo16, llvm::ARM::fixup_arm_thumb_bl, llvm::ARM::fixup_arm_thumb_blx, llvm::ARM::fixup_arm_uncondbl, llvm::ARM::fixup_t2_movt_hi16, llvm::ARM::fixup_t2_movw_lo16, llvm::FK_Data_4, llvm::MCAssembler::getContext(), llvm::MCFixup::getKind(), llvm::MCValue::getSymA(), llvm::MCSymbolRefExpr::getSymbol(), llvm::MCSymbol::isExternal(), and llvm::MCAssembler::isThumbFunc().
| const char * ARMAsmBackend::reasonForFixupRelaxation | ( | const MCFixup & | Fixup, |
| uint64_t | Value | ||
| ) | const |
Definition at line 202 of file ARMAsmBackend.cpp.
References llvm::ARM::fixup_arm_thumb_bcc, llvm::ARM::fixup_arm_thumb_br, llvm::ARM::fixup_arm_thumb_cb, llvm::ARM::fixup_arm_thumb_cp, llvm::ARM::fixup_thumb_adr_pcrel_10, llvm::MCFixup::getKind(), llvm_unreachable, and Offset.
Referenced by adjustFixupValue(), and fixupNeedsRelaxation().
|
overridevirtual |
Relax the instruction in the given fragment to the next wider instruction.
| Inst | The instruction to relax, which may be the same as the output. | |
| STI | the subtarget information for the associated instruction. | |
| [out] | Res | On return, the relaxed instruction. |
Implements llvm::MCAsmBackend.
Definition at line 261 of file ARMAsmBackend.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::MCInst::dump_pretty(), llvm::MCInst::getOpcode(), getRelaxedOpcode(), llvm::report_fatal_error(), llvm::MCInst::setOpcode(), and llvm::raw_svector_ostream::str().
|
inline |
Definition at line 75 of file ARMAsmBackend.h.
Referenced by handleAssemblerFlag().
|
overridevirtual |
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.
Implements llvm::MCAsmBackend.
Definition at line 292 of file ARMAsmBackend.cpp.
References hasNOP(), i, isThumb(), llvm::MCObjectWriter::write16(), llvm::MCObjectWriter::write32(), and llvm::MCObjectWriter::write8().
1.8.6