|
LLVM
4.0.0
|
Utilities for manipulating generated AVR machine code. More...
#include <AVRAsmBackend.h>
Public Member Functions | |
| AVRAsmBackend (Triple::OSType OSType) | |
| void | adjustFixupValue (const MCFixup &Fixup, uint64_t &Value, MCContext *Ctx=nullptr) const |
| 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... | |
| 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... | |
| const MCFixupKindInfo & | getFixupKindInfo (MCFixupKind Kind) const override |
| Get information on a fixup kind. More... | |
| unsigned | getNumFixupKinds () const override |
| Get the number of target specific fixup kinds. More... | |
| bool | mayNeedRelaxation (const MCInst &Inst) const override |
| Check whether the given instruction may need relaxation. More... | |
| 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 | processFixupValue (const MCAssembler &Asm, const MCAsmLayout &Layout, const MCFixup &Fixup, const MCFragment *DF, const MCValue &Target, uint64_t &Value, bool &IsResolved) override |
| Target hook to adjust the literal value of a fixup if necessary. More... | |
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 void | handleAssemblerFlag (MCAssemblerFlag Flag) |
| Handle any target-specific assembler flags. By default, do nothing. 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 () | |
Utilities for manipulating generated AVR machine code.
Definition at line 32 of file AVRAsmBackend.h.
|
inline |
Definition at line 35 of file AVRAsmBackend.h.
| void llvm::AVRAsmBackend::adjustFixupValue | ( | const MCFixup & | Fixup, |
| uint64_t & | Value, | ||
| MCContext * | Ctx = nullptr |
||
| ) | const |
Definition at line 233 of file AVRAsmBackend.cpp.
References adjust::ldi::fixup(), llvm::AVR::fixup_13_pcrel, adjust::fixup_13_pcrel(), llvm::AVR::fixup_16, llvm::AVR::fixup_6_adiw, adjust::fixup_6_adiw(), llvm::AVR::fixup_7_pcrel, adjust::fixup_7_pcrel(), llvm::AVR::fixup_call, adjust::fixup_call(), llvm::AVR::fixup_hh8_ldi, llvm::AVR::fixup_hh8_ldi_neg, llvm::AVR::fixup_hh8_ldi_pm, llvm::AVR::fixup_hh8_ldi_pm_neg, llvm::AVR::fixup_hi8_ldi, llvm::AVR::fixup_hi8_ldi_neg, llvm::AVR::fixup_hi8_ldi_pm, llvm::AVR::fixup_hi8_ldi_pm_neg, llvm::AVR::fixup_ldi, llvm::AVR::fixup_lo8_ldi, llvm::AVR::fixup_lo8_ldi_neg, llvm::AVR::fixup_lo8_ldi_pm, llvm::AVR::fixup_lo8_ldi_pm_neg, llvm::AVR::fixup_ms8_ldi, llvm::AVR::fixup_ms8_ldi_neg, llvm::AVR::fixup_port5, adjust::fixup_port5(), llvm::AVR::fixup_port6, adjust::fixup_port6(), llvm::FK_Data_2, llvm::FK_Data_4, llvm::FK_Data_8, llvm::FK_GPRel_4, getFixupKindInfo(), llvm::MCFixup::getKind(), adjust::ldi::hh8(), adjust::ldi::hi8(), Kind, llvm_unreachable, adjust::ldi::lo8(), adjust::ldi::ms8(), adjust::ldi::neg(), adjust::pm(), and adjust::unsigned_width().
Referenced by 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 336 of file AVRAsmBackend.cpp.
References assert(), getFixupKindInfo(), llvm::MCFixup::getKind(), llvm::MCFixup::getOffset(), i, Offset, llvm::MCFixupKindInfo::TargetOffset, and llvm::MCFixupKindInfo::TargetSize.
|
overridevirtual |
Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file.
Implements llvm::MCAsmBackend.
Definition at line 331 of file AVRAsmBackend.cpp.
References llvm::createAVRELFObjectWriter(), and llvm::MCELFObjectTargetWriter::getOSABI().
|
inlineoverridevirtual |
Simple predicate for targets where !Resolved implies requiring relaxation.
Implements llvm::MCAsmBackend.
Definition at line 54 of file AVRAsmBackend.h.
References llvm_unreachable.
|
overridevirtual |
Get information on a fixup kind.
Reimplemented from llvm::MCAsmBackend.
Definition at line 362 of file AVRAsmBackend.cpp.
References assert(), llvm::FirstTargetFixupKind, llvm::MCFixupKindInfo::FKF_IsPCRel, llvm::MCAsmBackend::getFixupKindInfo(), getNumFixupKinds(), and llvm::AVR::NumTargetFixupKinds.
Referenced by adjustFixupValue(), and applyFixup().
|
inlineoverridevirtual |
Get the number of target specific fixup kinds.
Implements llvm::MCAsmBackend.
Definition at line 48 of file AVRAsmBackend.h.
References llvm::AVR::NumTargetFixupKinds.
Referenced by getFixupKindInfo().
Check whether the given instruction may need relaxation.
| Inst | - The instruction to test. |
Implements llvm::MCAsmBackend.
Definition at line 52 of file AVRAsmBackend.h.
|
overridevirtual |
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.
Reimplemented from llvm::MCAsmBackend.
Definition at line 439 of file AVRAsmBackend.cpp.
References adjustFixupValue(), llvm::AVR::fixup_13_pcrel, llvm::AVR::fixup_7_pcrel, llvm::AVR::fixup_call, llvm::MCAssembler::getContext(), llvm::MCFixup::getKind(), llvm::MCValue::getSymA(), llvm::MCSymbolRefExpr::getSymbol(), and llvm::MCSymbol::isTemporary().
|
inlineoverridevirtual |
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 61 of file AVRAsmBackend.h.
|
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 429 of file AVRAsmBackend.cpp.
References assert(), and llvm::MCObjectWriter::WriteZeros().
1.8.6