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. More... | |
virtual bool | alignToBundleEnd () const |
Should this fragment be placed at the end of an aligned bundle? More... | |
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. More... | |
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. More... | |
void | dump () |
![]() | |
MCFragment * | getPrevNode () |
Get the previous node, or 0 for the list head. More... | |
const MCFragment * | getPrevNode () const |
Get the previous node, or 0 for the list head. More... | |
MCFragment * | getNextNode () |
Get the next node, or 0 for the list tail. More... | |
const MCFragment * | getNextNode () const |
Get the next node, or 0 for the list tail. More... | |
Protected Member Functions | |
MCFragment (FragmentType _Kind, MCSectionData *_Parent=0) | |
![]() | |
ilist_node () | |
Friends | |
class | MCAsmLayout |
Definition at line 41 of file MCAssembler.h.
Enumerator | |
---|---|
FT_Align | |
FT_Data | |
FT_CompactEncodedInst | |
FT_Fill | |
FT_Relaxable | |
FT_Org | |
FT_Dwarf | |
FT_DwarfFrame | |
FT_LEB |
Definition at line 48 of file MCAssembler.h.
|
protected |
Definition at line 214 of file MCAssembler.cpp.
References llvm::MCSectionData::getFragmentList(), and llvm::iplist< NodeTy, Traits >::push_back().
MCFragment::MCFragment | ( | ) |
Definition at line 208 of file MCAssembler.cpp.
|
virtual |
Definition at line 211 of file MCAssembler.cpp.
|
inlinevirtual |
Should this fragment be placed at the end of an aligned bundle?
Reimplemented in llvm::MCCompactEncodedInstFragment, and llvm::MCDataFragment.
Definition at line 109 of file MCAssembler.h.
Referenced by writeFragment().
void MCFragment::dump | ( | ) |
Definition at line 1016 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().
|
inline |
Definition at line 98 of file MCAssembler.h.
Referenced by llvm::MCAssembler::getAtom(), and llvm::MachObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl().
|
inlinevirtual |
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 117 of file MCAssembler.h.
Referenced by dump(), and writeFragment().
|
inline |
Definition at line 93 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(), and writeFragment().
|
inline |
Definition at line 101 of file MCAssembler.h.
|
inline |
Definition at line 95 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().
|
inlinevirtual |
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 106 of file MCAssembler.h.
Referenced by dump(), llvm::MCAsmLayout::layoutFragment(), and writeFragment().
|
inlinevirtual |
Reimplemented in llvm::MCCompactEncodedInstFragment, and llvm::MCDataFragment.
Definition at line 110 of file MCAssembler.h.
|
inline |
Definition at line 99 of file MCAssembler.h.
|
inlinevirtual |
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 123 of file MCAssembler.h.
Referenced by llvm::MCAsmLayout::layoutFragment().
|
inline |
Definition at line 102 of file MCAssembler.h.
|
inline |
Definition at line 96 of file MCAssembler.h.
Referenced by llvm::MCSectionData::getSubsectionInsertionPoint(), and llvm::MCObjectStreamer::insert().
|
friend |
Definition at line 42 of file MCAssembler.h.