LLVM 19.0.0git
|
#include "llvm/MC/MCAssembler.h"
Classes | |
struct | CGProfileEntry |
struct | Symver |
Public Types | |
using | SectionListType = SmallVector< MCSection *, 0 > |
using | const_iterator = pointee_iterator< SectionListType::const_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 |
Linker Option List Access | |
std::vector< CGProfileEntry > | CGProfile |
std::vector< std::vector< std::string > > & | getLinkerOptions () |
MCLOHContainer & | getLOHContainer () |
const MCLOHContainer & | getLOHContainer () const |
Definition at line 57 of file MCAssembler.h.
Definition at line 60 of file MCAssembler.h.
using llvm::MCAssembler::SectionListType = SmallVector<MCSection *, 0> |
Definition at line 59 of file MCAssembler.h.
using llvm::MCAssembler::VersionInfoType = { bool EmitBuildVersion |
MachO specific deployment target version info.
Definition at line 65 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 82 of file MCAssembler.cpp.
|
delete |
|
default |
|
inline |
Definition at line 369 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitFileDirective().
|
inline |
Definition at line 327 of file MCAssembler.h.
uint64_t MCAssembler::computeFragmentSize | ( | const MCFragment & | F | ) | const |
Compute the effective fragment size.
Definition at line 265 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(), getFragmentOffset(), llvm::MCOrgFragment::getLoc(), llvm::MCAlignFragment::getMaxBytesToEmit(), llvm::MCOrgFragment::getOffset(), llvm::MCFragment::getParent(), getSymbolOffset(), llvm::MCAlignFragment::hasEmitNops(), llvm_unreachable, llvm::Offset, llvm::offsetToAlignment(), llvm::MCContext::reportError(), Size, llvm::MCSection::useCodeAlign(), and llvm::Align::value().
Referenced by ensureValid(), getSectionAddressSize(), and layoutBundle().
LLVM_DUMP_METHOD void MCAssembler::dump | ( | ) | const |
Definition at line 1337 of file MCAssembler.cpp.
References llvm::MCSection::dump(), llvm::errs(), llvm::First, OS, Sym, and symbols().
Referenced by layout().
|
inline |
Definition at line 328 of file MCAssembler.h.
void MCAssembler::ensureValid | ( | MCSection & | Sec | ) | const |
Definition at line 451 of file MCAssembler.cpp.
References computeFragmentSize(), F, llvm::MCSection::hasLayout(), isBundlingEnabled(), layoutBundle(), llvm::Offset, and llvm::MCSection::setHasLayout().
Referenced by getFragmentOffset().
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 1061 of file MCAssembler.cpp.
References getWriter(), layout(), and llvm::MCObjectWriter::writeObject().
Referenced by llvm::MCObjectStreamer::finishImpl().
|
inline |
Definition at line 285 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 279 of file MCAssembler.h.
Referenced by computeFragmentSize(), layout(), reset(), writeFragmentPadding(), and writeSectionData().
Definition at line 533 of file MCAssembler.cpp.
References A, assert(), llvm::MCExpr::evaluateAsValue(), getContext(), llvm::MCExpr::getLoc(), llvm::MCSymbol::getName(), llvm::MCSymbolRefExpr::getSymbol(), llvm::MCSymbol::isCommon(), and llvm::MCContext::reportError().
|
inline |
Definition at line 319 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitBundleAlignMode(), layoutBundle(), setSectionAlignmentForBundling(), and writeFragmentPadding().
|
inline |
Definition at line 377 of file MCAssembler.h.
|
inline |
Definition at line 277 of file MCAssembler.h.
Referenced by computeFragmentSize(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MipsTargetELFStreamer::emitFrame(), llvm::MCELFStreamer::emitIdent(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::MipsTargetELFStreamer::finish(), getBaseSymbol(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), layout(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), and writeSectionData().
|
inline |
Definition at line 258 of file MCAssembler.h.
|
inline |
Definition at line 291 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitDwarfAdvanceLineAddr().
|
inline |
ELF e_header flags.
Definition at line 232 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 287 of file MCAssembler.h.
References Emitter.
Referenced by llvm::MCXCOFFStreamer::emitInstToData(), llvm::MCWinCOFFStreamer::emitInstToData(), and llvm::MCObjectStreamer::emitInstToFragment().
|
inline |
Definition at line 281 of file MCAssembler.h.
References Emitter.
Referenced by llvm::PPCELFStreamer::emitInstruction(), llvm::PPCXCOFFStreamer::emitInstruction(), reset(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().
|
inline |
Definition at line 365 of file MCAssembler.h.
uint64_t MCAssembler::getFragmentOffset | ( | const MCFragment & | F | ) | const |
Definition at line 468 of file MCAssembler.cpp.
References ensureValid(), and F.
Referenced by computeFragmentSize(), and getSectionAddressSize().
|
inline |
Definition at line 340 of file MCAssembler.h.
|
inline |
Definition at line 347 of file MCAssembler.h.
Referenced by getLOHContainer(), and reset().
|
inline |
Definition at line 348 of file MCAssembler.h.
References getLOHContainer().
|
inline |
Definition at line 314 of file MCAssembler.h.
Definition at line 570 of file MCAssembler.cpp.
References assert(), computeFragmentSize(), llvm::MCSection::curFragList(), F, getFragmentOffset(), and llvm::MCSection::FragList::Tail.
Referenced by getSectionFileSize(), and writeSectionData().
Definition at line 577 of file MCAssembler.cpp.
References getSectionAddressSize(), and llvm::MCSection::isVirtualSection().
Referenced by writeSectionData().
|
inline |
Definition at line 303 of file MCAssembler.h.
Definition at line 527 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Definition at line 523 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Referenced by computeFragmentSize().
|
inline |
MachO deployment target version information.
Definition at line 236 of file MCAssembler.h.
|
inline |
Definition at line 289 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 283 of file MCAssembler.h.
Referenced by reset().
|
inline |
Definition at line 313 of file MCAssembler.h.
|
inline |
Definition at line 317 of file MCAssembler.h.
Referenced by canReuseDataFragment(), ensureValid(), setSectionAlignmentForBundling(), and writeFragmentPadding().
|
inline |
Definition at line 306 of file MCAssembler.h.
Check whether a given symbol has been flagged with .thumb_func.
Definition at line 130 of file MCAssembler.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), isThumbFunc(), llvm::Ref, Sym, and llvm::MCSymbolRefExpr::VK_None.
Referenced by isThumbFunc().
void MCAssembler::layout | ( | ) |
Definition at line 925 of file MCAssembler.cpp.
References _, llvm::MCAsmBackend::applyFixup(), assert(), DEBUG_WITH_TYPE, DF, dump(), llvm::errs(), llvm::MCObjectWriter::executePostLayoutBinding(), llvm::MCAsmBackend::finishLayout(), 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::MCEncodedFragment::getSubtargetInfo(), getWriter(), llvm::MCAlignFragment::hasEmitNops(), llvm::MCFragment::hasInstructions(), llvm::List, llvm::MCSection::setHasLayout(), llvm::MCSection::setOrdinal(), llvm::MCAsmBackend::shouldInsertFixupForCodeAlign(), and llvm::CallingConv::Tail.
Referenced by Finish().
void MCAssembler::layoutBundle | ( | MCFragment * | Prev, |
MCFragment * | F | ||
) | const |
Definition at line 410 of file MCAssembler.cpp.
References assert(), computeBundlePadding(), computeFragmentSize(), DF, F, getBundleAlignSize(), llvm::report_fatal_error(), and llvm::MCEncodedFragment::setBundlePadding().
Referenced by ensureValid().
|
delete |
Definition at line 121 of file MCAssembler.cpp.
References assert(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by llvm::MCObjectStreamer::changeSectionImpl().
Definition at line 584 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 94 of file MCAssembler.cpp.
References llvm::SmallVectorImpl< T >::clear(), getBackendPtr(), getEmitterPtr(), getLOHContainer(), getWriterPtr(), llvm::MCAsmBackend::reset(), llvm::MCCodeEmitter::reset(), llvm::MCLOHContainer::reset(), and llvm::MCObjectWriter::reset().
|
inline |
Definition at line 247 of file MCAssembler.h.
References Major, Minor, Platform, SDKVersion, and Update.
|
inline |
Definition at line 321 of file MCAssembler.h.
References assert(), and Size.
Referenced by llvm::MCELFStreamer::emitBundleAlignMode().
|
inline |
Definition at line 373 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitFileDirective().
|
inline |
Definition at line 261 of file MCAssembler.h.
References Major, Minor, Platform, SDKVersion, and Update.
|
inline |
Definition at line 292 of file MCAssembler.h.
References P.
|
inline |
Definition at line 233 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 309 of file MCAssembler.h.
Flag a function symbol as the target of a .thumb_func directive.
Definition at line 229 of file MCAssembler.h.
References llvm::SmallPtrSetImpl< PtrType >::insert().
|
inline |
Definition at line 315 of file MCAssembler.h.
|
inline |
Definition at line 304 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitAssemblerFlag().
|
inline |
Definition at line 237 of file MCAssembler.h.
References Major, Minor, SDKVersion, Type, and Update.
|
inline |
Definition at line 332 of file MCAssembler.h.
References llvm::make_pointee_range().
Referenced by dump().
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 593 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 |
Emit the section contents to OS
.
Definition at line 847 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(), getSectionAddressSize(), getSectionFileSize(), llvm::MCSection::isVirtualSection(), llvm_unreachable, OS, llvm::MCContext::reportError(), llvm::raw_ostream::tell(), and writeFragment().
std::vector<CGProfileEntry> llvm::MCAssembler::CGProfile |
Definition at line 357 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitCGProfileEntry(), and llvm::MCWinCOFFStreamer::emitCGProfileEntry().
unsigned llvm::MCAssembler::Major |
Definition at line 71 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
unsigned llvm::MCAssembler::Minor |
Definition at line 72 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
MachO::PlatformType llvm::MCAssembler::Platform |
Used when EmitBuildVersion==true.
Definition at line 69 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 75 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().
std::vector<Symver> llvm::MCAssembler::Symvers |
Definition at line 184 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitELFSymverDirective().
MCVersionMinType llvm::MCAssembler::Type |
Used when EmitBuildVersion==false.
Definition at line 68 of file MCAssembler.h.
Referenced by setVersionMin().
union { ... } llvm::MCAssembler::TypeOrPlatform |
unsigned llvm::MCAssembler::Update |
Definition at line 73 of file MCAssembler.h.
Referenced by setBuildVersion(), setDarwinTargetVariantBuildVersion(), and setVersionMin().