LLVM 19.0.0git
|
#include "llvm/MC/MCAssembler.h"
Classes | |
struct | CGProfileEntry |
struct | Symver |
Public Types | |
using | SectionListType = std::vector< MCSection * > |
using | SymbolDataListType = std::vector< const MCSymbol * > |
using | const_iterator = pointee_iterator< SectionListType::const_iterator > |
using | iterator = pointee_iterator< SectionListType::iterator > |
using | const_symbol_iterator = pointee_iterator< SymbolDataListType::const_iterator > |
using | symbol_iterator = pointee_iterator< SymbolDataListType::iterator > |
using | symbol_range = iterator_range< symbol_iterator > |
using | const_symbol_range = iterator_range< const_symbol_iterator > |
using | const_indirect_symbol_iterator = std::vector< IndirectSymbolData >::const_iterator |
using | indirect_symbol_iterator = std::vector< IndirectSymbolData >::iterator |
using | const_data_region_iterator = std::vector< DataRegionData >::const_iterator |
using | data_region_iterator = std::vector< DataRegionData >::iterator |
using | VersionInfoType = { bool EmitBuildVersion |
MachO specific deployment target version info. | |
Public Attributes | |
union { | |
MCVersionMinType Type | |
Used when EmitBuildVersion==false. More... | |
MachO::PlatformType Platform | |
Used when EmitBuildVersion==true. More... | |
} | TypeOrPlatform |
unsigned | Major |
unsigned | Minor |
unsigned | Update |
VersionTuple | SDKVersion |
An optional version of the SDK that was used to build the source. | |
std::vector< Symver > | Symvers |
Friends | |
class | MCAsmLayout |
Data Region List Access | |
std::vector< CGProfileEntry > | CGProfile |
std::vector< DataRegionData > & | getDataRegions () |
data_region_iterator | data_region_begin () |
const_data_region_iterator | data_region_begin () const |
data_region_iterator | data_region_end () |
const_data_region_iterator | data_region_end () const |
size_t | data_region_size () const |
MCLOHContainer & | getLOHContainer () |
const MCLOHContainer & | getLOHContainer () const |
Definition at line 73 of file MCAssembler.h.
using llvm::MCAssembler::const_data_region_iterator = std::vector<DataRegionData>::const_iterator |
Definition at line 94 of file MCAssembler.h.
using llvm::MCAssembler::const_indirect_symbol_iterator = std::vector<IndirectSymbolData>::const_iterator |
Definition at line 90 of file MCAssembler.h.
using llvm::MCAssembler::const_iterator = pointee_iterator<SectionListType::const_iterator> |
Definition at line 80 of file MCAssembler.h.
using llvm::MCAssembler::const_symbol_iterator = pointee_iterator<SymbolDataListType::const_iterator> |
Definition at line 83 of file MCAssembler.h.
Definition at line 88 of file MCAssembler.h.
using llvm::MCAssembler::data_region_iterator = std::vector<DataRegionData>::iterator |
Definition at line 96 of file MCAssembler.h.
using llvm::MCAssembler::indirect_symbol_iterator = std::vector<IndirectSymbolData>::iterator |
Definition at line 92 of file MCAssembler.h.
using llvm::MCAssembler::iterator = pointee_iterator<SectionListType::iterator> |
Definition at line 81 of file MCAssembler.h.
using llvm::MCAssembler::SectionListType = std::vector<MCSection *> |
Definition at line 77 of file MCAssembler.h.
using llvm::MCAssembler::symbol_iterator = pointee_iterator<SymbolDataListType::iterator> |
Definition at line 85 of file MCAssembler.h.
Definition at line 87 of file MCAssembler.h.
using llvm::MCAssembler::SymbolDataListType = std::vector<const MCSymbol *> |
Definition at line 78 of file MCAssembler.h.
using llvm::MCAssembler::VersionInfoType = { bool EmitBuildVersion |
MachO specific deployment target version info.
Definition at line 101 of file MCAssembler.h.
MCAssembler::MCAssembler | ( | MCContext & | Context, |
std::unique_ptr< MCAsmBackend > | Backend, | ||
std::unique_ptr< MCCodeEmitter > | Emitter, | ||
std::unique_ptr< MCObjectWriter > | Writer | ||
) |
Construct a new assembler instance.
Definition at line 83 of file MCAssembler.cpp.
|
delete |
|
default |
|
inline |
Definition at line 483 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitFileDirective().
|
inline |
Definition at line 374 of file MCAssembler.h.
Referenced by dump().
|
inline |
Definition at line 375 of file MCAssembler.h.
uint64_t MCAssembler::computeFragmentSize | ( | const MCAsmLayout & | Layout, |
const MCFragment & | F | ||
) | const |
Compute the effective fragment size assuming it is laid out at the given SectionAddress
and FragmentOffset
.
Definition at line 301 of file MCAssembler.cpp.
References A, assert(), llvm::MCExpr::evaluateAsValue(), F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_BoundaryAlign, llvm::MCFragment::FT_CompactEncodedInst, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_CVInlineLines, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Dummy, llvm::MCFragment::FT_Dwarf, llvm::MCFragment::FT_DwarfFrame, llvm::MCFragment::FT_Fill, llvm::MCFragment::FT_LEB, llvm::MCFragment::FT_Nops, llvm::MCFragment::FT_Org, llvm::MCFragment::FT_PseudoProbe, llvm::MCFragment::FT_Relaxable, llvm::MCFragment::FT_SymbolId, llvm::MCAlignFragment::getAlignment(), getBackend(), getBackendPtr(), getContext(), llvm::MCAsmLayout::getFragmentOffset(), llvm::MCOrgFragment::getLoc(), llvm::MCAlignFragment::getMaxBytesToEmit(), llvm::MCOrgFragment::getOffset(), llvm::MCFragment::getParent(), llvm::MCAsmLayout::getSymbolOffset(), llvm::MCAlignFragment::hasEmitNops(), llvm_unreachable, llvm::Offset, llvm::offsetToAlignment(), llvm::MCContext::reportError(), Size, llvm::MCSection::useCodeAlign(), and llvm::Align::value().
Referenced by llvm::MCAsmLayout::getSectionAddressSize(), and llvm::MCAsmLayout::layoutBundle().
|
inline |
Definition at line 442 of file MCAssembler.h.
|
inline |
Definition at line 443 of file MCAssembler.h.
|
inline |
Definition at line 447 of file MCAssembler.h.
|
inline |
Definition at line 448 of file MCAssembler.h.
|
inline |
Definition at line 452 of file MCAssembler.h.
LLVM_DUMP_METHOD void MCAssembler::dump | ( | ) | const |
Definition at line 1284 of file MCAssembler.cpp.
References begin(), end(), llvm::errs(), OS, symbol_begin(), and symbol_end().
Referenced by layout().
|
inline |
Definition at line 377 of file MCAssembler.h.
Referenced by dump().
|
inline |
Definition at line 378 of file MCAssembler.h.
void MCAssembler::Finish | ( | ) |
Finish - Do final processing and write the object to the output stream.
Writer
is used for custom object writer (as the MCJIT does), if not specified it is automatically created from backend.
Definition at line 992 of file MCAssembler.cpp.
References getWriter(), layout(), and llvm::MCObjectWriter::writeObject().
Referenced by llvm::MCObjectStreamer::finishImpl().
Find the symbol which defines the atom containing the given symbol, or null if there is no such symbol.
Definition at line 177 of file MCAssembler.cpp.
References llvm::MCFragment::getAtom(), getContext(), llvm::MCSymbol::getFragment(), llvm::MCFragment::getParent(), llvm::MCSymbol::isInSection(), and isSymbolLinkerVisible().
|
inline |
Definition at line 330 of file MCAssembler.h.
Referenced by computeFragmentSize(), llvm::MCELFStreamer::emitAssemblerFlag(), llvm::MCWasmStreamer::emitAssemblerFlag(), llvm::MCWinCOFFStreamer::emitAssemblerFlag(), llvm::X86_MC::emitInstruction(), llvm::MCObjectStreamer::emitRelocDirective(), llvm::MCXCOFFStreamer::emitXCOFFRefDirective(), layout(), llvm::LoongArchTargetELFStreamer::LoongArchTargetELFStreamer(), llvm::RISCVTargetELFStreamer::RISCVTargetELFStreamer(), and writeFragmentPadding().
|
inline |
Definition at line 324 of file MCAssembler.h.
Referenced by computeFragmentSize(), layout(), reset(), writeFragmentPadding(), and writeSectionData().
|
inline |
Definition at line 363 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitBundleAlignMode(), llvm::MCAsmLayout::layoutBundle(), setSectionAlignmentForBundling(), and writeFragmentPadding().
|
inline |
Definition at line 491 of file MCAssembler.h.
|
inline |
Definition at line 322 of file MCAssembler.h.
Referenced by computeFragmentSize(), computeLabelDiff(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MipsTargetELFStreamer::emitFrame(), llvm::MCELFStreamer::emitIdent(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::CodeViewContext::encodeDefRange(), llvm::AVRMCExpr::evaluateAsRelocatableImpl(), llvm::PPCMCExpr::evaluateAsRelocatableImpl(), llvm::MipsTargetELFStreamer::finish(), getAtom(), llvm::MCAsmLayout::getBaseSymbol(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), layout(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), llvm::LoongArchAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfCFA(), llvm::LoongArchAsmBackend::relaxDwarfLineAddr(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), and writeSectionData().
|
inline |
Definition at line 303 of file MCAssembler.h.
Referenced by llvm::MachObjectWriter::writeObject().
|
inline |
Definition at line 440 of file MCAssembler.h.
|
inline |
Definition at line 336 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitDwarfAdvanceLineAddr().
|
inline |
ELF e_header flags.
Definition at line 277 of file MCAssembler.h.
Referenced by llvm::AVRELFStreamer::AVRELFStreamer(), llvm::CSKYTargetELFStreamer::CSKYTargetELFStreamer(), llvm::MipsTargetELFStreamer::emitDirectiveAbiCalls(), llvm::MipsTargetELFStreamer::emitDirectiveNaN2008(), llvm::MipsTargetELFStreamer::emitDirectiveNaNLegacy(), llvm::MipsTargetELFStreamer::emitDirectiveOptionPic0(), llvm::MipsTargetELFStreamer::emitDirectiveOptionPic2(), llvm::MipsTargetELFStreamer::emitDirectiveSetMips16(), llvm::MipsTargetELFStreamer::emitDirectiveSetNoReorder(), llvm::LoongArchTargetELFStreamer::finish(), llvm::MipsTargetELFStreamer::finish(), llvm::RISCVTargetELFStreamer::finish(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), llvm::MSP430TargetELFStreamer::MSP430TargetELFStreamer(), and llvm::MipsTargetELFStreamer::setUsesMicroMips().
|
inline |
Definition at line 332 of file MCAssembler.h.
References Emitter.
Referenced by llvm::MCXCOFFStreamer::emitInstToData(), llvm::MCWinCOFFStreamer::emitInstToData(), and llvm::MCObjectStreamer::emitInstToFragment().
|
inline |
Definition at line 326 of file MCAssembler.h.
References Emitter.
Referenced by llvm::PPCELFStreamer::emitInstruction(), llvm::PPCXCOFFStreamer::emitInstruction(), reset(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().
|
inline |
Definition at line 479 of file MCAssembler.h.
|
inline |
Definition at line 405 of file MCAssembler.h.
|
inline |
Definition at line 429 of file MCAssembler.h.
|
inline |
Definition at line 461 of file MCAssembler.h.
Referenced by getLOHContainer(), and reset().
|
inline |
Definition at line 462 of file MCAssembler.h.
References getLOHContainer().
|
inline |
Definition at line 358 of file MCAssembler.h.
|
inline |
Definition at line 348 of file MCAssembler.h.
|
inline |
MachO deployment target version information.
Definition at line 281 of file MCAssembler.h.
Referenced by llvm::MachObjectWriter::writeObject().
|
inline |
Definition at line 334 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitAddrsig(), llvm::MCObjectStreamer::emitAddrsigSym(), llvm::MCELFStreamer::emitSymbolAttribute(), llvm::MCXCOFFStreamer::emitXCOFFCInfoSym(), llvm::MCXCOFFStreamer::emitXCOFFExceptDirective(), Finish(), llvm::AMDGPUTargetELFStreamer::finish(), and layout().
|
inline |
Definition at line 328 of file MCAssembler.h.
Referenced by reset().
|
inline |
Definition at line 409 of file MCAssembler.h.
|
inline |
Definition at line 412 of file MCAssembler.h.
|
inline |
Definition at line 416 of file MCAssembler.h.
|
inline |
Definition at line 419 of file MCAssembler.h.
|
inline |
Definition at line 423 of file MCAssembler.h.
|
inline |
Definition at line 361 of file MCAssembler.h.
Referenced by canReuseDataFragment(), setSectionAlignmentForBundling(), and writeFragmentPadding().
|
inline |
Definition at line 351 of file MCAssembler.h.
Check whether a particular symbol is visible to the linker and is required in the symbol table, or whether it can be discarded by the assembler.
This also effects whether the assembler treats the label as potentially defining a separate atom.
Definition at line 166 of file MCAssembler.cpp.
Referenced by getAtom().
Check whether a given symbol has been flagged with .thumb_func.
Definition at line 135 of file MCAssembler.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), isThumbFunc(), llvm::Ref, Sym, and llvm::MCSymbolRefExpr::VK_None.
Referenced by isThumbFunc().
void MCAssembler::layout | ( | MCAsmLayout & | Layout | ) |
Definition at line 852 of file MCAssembler.cpp.
References _, llvm::MCAsmBackend::applyFixup(), assert(), DEBUG_WITH_TYPE, DF, dump(), llvm::errs(), llvm::MCObjectWriter::executePostLayoutBinding(), Fixup, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Dwarf, llvm::MCFragment::FT_DwarfFrame, llvm::MCFragment::FT_LEB, llvm::MCFragment::FT_PseudoProbe, llvm::MCFragment::FT_Relaxable, getBackend(), getBackendPtr(), llvm::MCEncodedFragmentWithContents< ContentsSize >::getContents(), getContext(), llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::getFixups(), llvm::MCFragment::getKind(), llvm::MCAsmLayout::getSectionOrder(), llvm::MCEncodedFragment::getSubtargetInfo(), getWriter(), llvm::MCAlignFragment::hasEmitNops(), llvm::MCFragment::hasInstructions(), llvm::List, llvm::MCSection::setHasLayout(), llvm::MCFragment::setLayoutOrder(), llvm::MCSection::setLayoutOrder(), llvm::MCSection::setOrdinal(), llvm::MCAsmBackend::shouldInsertFixupForCodeAlign(), and llvm::CallingConv::Tail.
Referenced by Finish().
|
delete |
Definition at line 126 of file MCAssembler.cpp.
References assert().
Referenced by llvm::MCObjectStreamer::changeSectionImpl().
Definition at line 511 of file MCAssembler.cpp.
Referenced by llvm::MCWinCOFFStreamer::changeSection(), llvm::MipsELFStreamer::createPendingLabelRelocs(), llvm::MCObjectStreamer::emitAssignment(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::emitCOFFSymbolIndex(), llvm::MCWinCOFFStreamer::emitCOFFSymbolStorageClass(), llvm::MCWinCOFFStreamer::emitCOFFSymbolType(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::MCXCOFFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::RISCVTargetELFStreamer::emitDirectiveVariantCC(), llvm::MipsTargetELFStreamer::emitLabel(), llvm::MCObjectStreamer::emitLabel(), llvm::MCObjectStreamer::emitLabelAtPos(), llvm::MCELFStreamer::emitLocalCommonSymbol(), llvm::MCELFStreamer::emitSymbolAttribute(), llvm::MCWasmStreamer::emitSymbolAttribute(), llvm::MCWinCOFFStreamer::emitSymbolAttribute(), llvm::MCXCOFFStreamer::emitSymbolAttribute(), llvm::MCELFStreamer::emitWeakReference(), llvm::MCWasmStreamer::emitWeakReference(), llvm::MCWinCOFFStreamer::emitWeakReference(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and llvm::HexagonMCELFStreamer::HexagonMCEmitLocalCommonSymbol().
void MCAssembler::reset | ( | ) |
Reuse an assembler instance.
Definition at line 97 of file MCAssembler.cpp.
References getBackendPtr(), getEmitterPtr(), getLOHContainer(), getWriterPtr(), llvm::MCAsmBackend::reset(), llvm::MCCodeEmitter::reset(), llvm::MCLOHContainer::reset(), and llvm::MCObjectWriter::reset().
|
inline |
Definition at line 292 of file MCAssembler.h.
References Major, Minor, Platform, SDKVersion, and Update.
|
inline |
Definition at line 365 of file MCAssembler.h.
References assert(), and Size.
Referenced by llvm::MCELFStreamer::emitBundleAlignMode().
|
inline |
Definition at line 487 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitFileDirective().
|
inline |
Definition at line 306 of file MCAssembler.h.
References Major, Minor, Platform, SDKVersion, and Update.
|
inline |
Definition at line 337 of file MCAssembler.h.
References P.
|
inline |
Definition at line 278 of file MCAssembler.h.
Referenced by llvm::AVRELFStreamer::AVRELFStreamer(), llvm::CSKYTargetELFStreamer::CSKYTargetELFStreamer(), llvm::MipsTargetELFStreamer::emitDirectiveAbiCalls(), llvm::MipsTargetELFStreamer::emitDirectiveNaN2008(), llvm::MipsTargetELFStreamer::emitDirectiveNaNLegacy(), llvm::MipsTargetELFStreamer::emitDirectiveOptionPic0(), llvm::MipsTargetELFStreamer::emitDirectiveOptionPic2(), llvm::MipsTargetELFStreamer::emitDirectiveSetMips16(), llvm::MipsTargetELFStreamer::emitDirectiveSetNoReorder(), llvm::AMDGPUTargetELFStreamer::finish(), llvm::LoongArchTargetELFStreamer::finish(), llvm::MipsTargetELFStreamer::finish(), llvm::RISCVTargetELFStreamer::finish(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), llvm::MSP430TargetELFStreamer::MSP430TargetELFStreamer(), and llvm::MipsTargetELFStreamer::setUsesMicroMips().
|
inline |
Definition at line 354 of file MCAssembler.h.
Flag a function symbol as the target of a .thumb_func directive.
Definition at line 274 of file MCAssembler.h.
References llvm::SmallPtrSetImpl< PtrType >::insert().
|
inline |
Definition at line 359 of file MCAssembler.h.
|
inline |
Definition at line 349 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitAssemblerFlag().
|
inline |
Definition at line 282 of file MCAssembler.h.
References Major, Minor, SDKVersion, Type, and Update.
|
inline |
Definition at line 380 of file MCAssembler.h.
|
inline |
Definition at line 385 of file MCAssembler.h.
|
inline |
Definition at line 386 of file MCAssembler.h.
|
inline |
Definition at line 388 of file MCAssembler.h.
|
inline |
Definition at line 389 of file MCAssembler.h.
|
inline |
Definition at line 396 of file MCAssembler.h.
|
inline |
Definition at line 391 of file MCAssembler.h.
References llvm::make_range(), symbol_begin(), and symbol_end().
|
inline |
Definition at line 392 of file MCAssembler.h.
References llvm::make_range(), symbol_begin(), and symbol_end().
void MCAssembler::writeFragmentPadding | ( | raw_ostream & | OS, |
const MCEncodedFragment & | F, | ||
uint64_t | FSize | ||
) | const |
Write the necessary bundle padding to OS
.
Expects a fragment F
containing instructions and its size FSize
.
Definition at line 520 of file MCAssembler.cpp.
References llvm::MCEncodedFragment::alignToBundleEnd(), assert(), getBackend(), getBackendPtr(), getBundleAlignSize(), llvm::MCEncodedFragment::getBundlePadding(), llvm::MCEncodedFragment::getSubtargetInfo(), llvm::MCFragment::hasInstructions(), isBundlingEnabled(), OS, and llvm::report_fatal_error().
void MCAssembler::writeSectionData | ( | raw_ostream & | OS, |
const MCSection * | Section, | ||
const MCAsmLayout & | Layout | ||
) | const |
Emit the section contents to OS
.
Definition at line 774 of file MCAssembler.cpp.
References assert(), DF, F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Fill, llvm::MCFragment::FT_Org, getBackendPtr(), getContext(), llvm::MCAsmLayout::getSectionAddressSize(), llvm::MCAsmLayout::getSectionFileSize(), llvm::MCSection::isVirtualSection(), llvm_unreachable, OS, llvm::MCContext::reportError(), llvm::raw_ostream::tell(), and writeFragment().
|
friend |
Definition at line 74 of file MCAssembler.h.
std::vector<CGProfileEntry> llvm::MCAssembler::CGProfile |
Definition at line 471 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitCGProfileEntry(), and llvm::MCWinCOFFStreamer::emitCGProfileEntry().
unsigned llvm::MCAssembler::Major |
Definition at line 107 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
unsigned llvm::MCAssembler::Minor |
Definition at line 108 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
MachO::PlatformType llvm::MCAssembler::Platform |
Used when EmitBuildVersion==true.
Definition at line 105 of file MCAssembler.h.
Referenced by setBuildVersion(), and setDarwinTargetVariantBuildVersion().
VersionTuple llvm::MCAssembler::SDKVersion |
An optional version of the SDK that was used to build the source.
Definition at line 111 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
std::vector<Symver> llvm::MCAssembler::Symvers |
Definition at line 236 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitELFSymverDirective().
MCVersionMinType llvm::MCAssembler::Type |
Used when EmitBuildVersion==false.
Definition at line 104 of file MCAssembler.h.
Referenced by setVersionMin().
union { ... } llvm::MCAssembler::TypeOrPlatform |
unsigned llvm::MCAssembler::Update |
Definition at line 109 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().