LLVM API Documentation
#include <MCAssembler.h>
Public Types | |
enum | FragmentType { FT_Align, FT_Data, FT_CompactEncodedInst, FT_Fill, FT_Relaxable, FT_Org, FT_Dwarf, FT_DwarfFrame, FT_LEB } |
Public Member Functions | |
MCFragment () | |
virtual | ~MCFragment () |
FragmentType | getKind () const |
MCSectionData * | getParent () const |
void | setParent (MCSectionData *Value) |
MCSymbolData * | getAtom () const |
void | setAtom (MCSymbolData *Value) |
unsigned | getLayoutOrder () const |
void | setLayoutOrder (unsigned Value) |
virtual bool | hasInstructions () const |
Does this fragment have instructions emitted into it? By default this is false, but specific fragment types may set it to true. | |
virtual bool | alignToBundleEnd () const |
Should this fragment be placed at the end of an aligned bundle? | |
virtual void | setAlignToBundleEnd (bool V) |
virtual uint8_t | getBundlePadding () const |
Get the padding size that must be inserted before this fragment. Used for bundling. By default, no padding is inserted. Note that padding size is restricted to 8 bits. This is an optimization to reduce the amount of space used for each fragment. In practice, larger padding should never be required. | |
virtual void | setBundlePadding (uint8_t N) |
Set the padding size for this fragment. By default it's a no-op, and only some fragments have a meaningful implementation. | |
void | dump () |
Protected Member Functions | |
MCFragment (FragmentType _Kind, MCSectionData *_Parent=nullptr) | |
Friends | |
class | MCAsmLayout |
Definition at line 45 of file MCAssembler.h.
FT_Align | |
FT_Data | |
FT_CompactEncodedInst | |
FT_Fill | |
FT_Relaxable | |
FT_Org | |
FT_Dwarf | |
FT_DwarfFrame | |
FT_LEB |
Definition at line 52 of file MCAssembler.h.
MCFragment::MCFragment | ( | FragmentType | _Kind, |
MCSectionData * | _Parent = nullptr |
||
) | [protected] |
Definition at line 269 of file MCAssembler.cpp.
References llvm::MCSectionData::getFragmentList(), and llvm::iplist< NodeTy, Traits >::push_back().
MCFragment::MCFragment | ( | ) |
Definition at line 263 of file MCAssembler.cpp.
MCFragment::~MCFragment | ( | ) | [virtual] |
Definition at line 266 of file MCAssembler.cpp.
virtual bool llvm::MCFragment::alignToBundleEnd | ( | ) | const [inline, virtual] |
Should this fragment be placed at the end of an aligned bundle?
Reimplemented in llvm::MCCompactEncodedInstFragment, and llvm::MCDataFragment.
Definition at line 112 of file MCAssembler.h.
Referenced by writeFragment().
void MCFragment::dump | ( | ) |
Definition at line 1119 of file MCAssembler.cpp.
References llvm::MCInst::dump_pretty(), llvm::errs(), llvm::MCDataFragment::fixup_begin(), llvm::MCDataFragment::fixup_end(), FT_Align, FT_CompactEncodedInst, FT_Data, FT_Dwarf, FT_DwarfFrame, FT_Fill, FT_LEB, FT_Org, FT_Relaxable, llvm::MCDwarfLineAddrFragment::getAddrDelta(), llvm::MCDwarfCallFrameFragment::getAddrDelta(), llvm::MCAlignFragment::getAlignment(), getBundlePadding(), llvm::MCDataFragment::getContents(), llvm::MCCompactEncodedInstFragment::getContents(), llvm::MCRelaxableFragment::getInst(), getKind(), llvm::MCDwarfLineAddrFragment::getLineDelta(), llvm::MCAlignFragment::getMaxBytesToEmit(), llvm::MCOrgFragment::getOffset(), llvm::MCFillFragment::getSize(), llvm::MCAlignFragment::getValue(), llvm::MCFillFragment::getValue(), llvm::MCOrgFragment::getValue(), llvm::MCLEBFragment::getValue(), llvm::MCAlignFragment::getValueSize(), llvm::MCFillFragment::getValueSize(), llvm::MCAlignFragment::hasEmitNops(), hasInstructions(), llvm::hexdigit(), llvm::MCLEBFragment::isSigned(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
MCSymbolData* llvm::MCFragment::getAtom | ( | ) | const [inline] |
Definition at line 101 of file MCAssembler.h.
Referenced by llvm::MCAssembler::getAtom(), and llvm::MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl().
virtual uint8_t llvm::MCFragment::getBundlePadding | ( | ) | const [inline, virtual] |
Get the padding size that must be inserted before this fragment. Used for bundling. By default, no padding is inserted. Note that padding size is restricted to 8 bits. This is an optimization to reduce the amount of space used for each fragment. In practice, larger padding should never be required.
Reimplemented in llvm::MCEncodedFragment.
Definition at line 120 of file MCAssembler.h.
Referenced by dump(), and writeFragment().
FragmentType llvm::MCFragment::getKind | ( | ) | const [inline] |
Definition at line 96 of file MCAssembler.h.
Referenced by llvm::MCEncodedFragment::classof(), llvm::MCEncodedFragmentWithFixups::classof(), llvm::MCDataFragment::classof(), llvm::MCCompactEncodedInstFragment::classof(), llvm::MCRelaxableFragment::classof(), llvm::MCAlignFragment::classof(), llvm::MCFillFragment::classof(), llvm::MCOrgFragment::classof(), llvm::MCLEBFragment::classof(), llvm::MCDwarfLineAddrFragment::classof(), llvm::MCDwarfCallFrameFragment::classof(), llvm::MCAssembler::computeFragmentSize(), dump(), getUncompressedData(), and writeFragment().
unsigned llvm::MCFragment::getLayoutOrder | ( | ) | const [inline] |
Definition at line 104 of file MCAssembler.h.
MCSectionData* llvm::MCFragment::getParent | ( | ) | const [inline] |
Definition at line 98 of file MCAssembler.h.
Referenced by llvm::MCAssembler::getAtom(), llvm::MachObjectWriter::getFragmentAddress(), llvm::MachObjectWriter::getSymbolAddress(), llvm::MCAsmLayout::invalidateFragmentsFrom(), llvm::MCObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(), llvm::MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(), and llvm::MCAsmLayout::layoutFragment().
virtual bool llvm::MCFragment::hasInstructions | ( | ) | const [inline, virtual] |
Does this fragment have instructions emitted into it? By default this is false, but specific fragment types may set it to true.
Reimplemented in llvm::MCRelaxableFragment, llvm::MCCompactEncodedInstFragment, and llvm::MCDataFragment.
Definition at line 109 of file MCAssembler.h.
Referenced by dump(), llvm::MCAsmLayout::layoutFragment(), and writeFragment().
virtual void llvm::MCFragment::setAlignToBundleEnd | ( | bool | V | ) | [inline, virtual] |
Reimplemented in llvm::MCCompactEncodedInstFragment, and llvm::MCDataFragment.
Definition at line 113 of file MCAssembler.h.
void llvm::MCFragment::setAtom | ( | MCSymbolData * | Value | ) | [inline] |
Definition at line 102 of file MCAssembler.h.
virtual void llvm::MCFragment::setBundlePadding | ( | uint8_t | N | ) | [inline, virtual] |
Set the padding size for this fragment. By default it's a no-op, and only some fragments have a meaningful implementation.
Reimplemented in llvm::MCEncodedFragment.
Definition at line 126 of file MCAssembler.h.
Referenced by llvm::MCAsmLayout::layoutFragment().
void llvm::MCFragment::setLayoutOrder | ( | unsigned | Value | ) | [inline] |
Definition at line 105 of file MCAssembler.h.
void llvm::MCFragment::setParent | ( | MCSectionData * | Value | ) | [inline] |
Definition at line 99 of file MCAssembler.h.
Referenced by llvm::MCSectionData::getSubsectionInsertionPoint(), and llvm::MCObjectStreamer::insert().
friend class MCAsmLayout [friend] |
Definition at line 46 of file MCAssembler.h.