LLVM 22.0.0git
|
#include "llvm/MC/MCAssembler.h"
Public Types | |
using | SectionListType = SmallVector< MCSection *, 0 > |
using | const_iterator = pointee_iterator< SectionListType::const_iterator > |
Friends | |
class | MCObjectWriter |
Definition at line 49 of file MCAssembler.h.
Definition at line 53 of file MCAssembler.h.
using llvm::MCAssembler::SectionListType = SmallVector<MCSection *, 0> |
Definition at line 52 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 78 of file MCAssembler.cpp.
References Context.
|
delete |
void MCAssembler::addRelocDirective | ( | RelocDirective | RD | ) |
Definition at line 377 of file MCAssembler.cpp.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by llvm::MCObjectStreamer::emitRelocDirective().
|
inline |
Definition at line 196 of file MCAssembler.h.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
Referenced by llvm::MachObjectWriter::writeObject().
uint64_t MCAssembler::computeFragmentSize | ( | const MCFragment & | F | ) | const |
Compute the effective fragment size.
Definition at line 193 of file MCAssembler.cpp.
References assert(), F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_BoundaryAlign, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_CVInlineLines, llvm::MCFragment::FT_Data, 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_Relaxable, llvm::MCFragment::FT_SymbolId, getBackendPtr(), getFragmentOffset(), getSymbolOffset(), llvm_unreachable, recordError(), and Size.
LLVM_DUMP_METHOD void MCAssembler::dump | ( | ) | const |
Definition at line 1033 of file MCAssembler.cpp.
References llvm::MCSection::dump(), llvm::errs(), F, OS, Sym, symbols(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::try_emplace().
Referenced by layout().
|
inline |
Definition at line 197 of file MCAssembler.h.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
Referenced by llvm::MachObjectWriter::writeObject().
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 730 of file MCAssembler.cpp.
References assert(), getWriter(), layout(), and llvm::MCObjectWriter::writeObject().
Referenced by llvm::MCObjectStreamer::finishImpl().
void MCAssembler::flushPendingErrors | ( | ) | const |
Definition at line 1026 of file MCAssembler.cpp.
References reportError().
Referenced by layout(), and writeSectionData().
|
inline |
Definition at line 175 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitInstruction(), llvm::X86_MC::emitInstruction(), layout(), llvm::LoongArchTargetELFStreamer::LoongArchTargetELFStreamer(), and llvm::RISCVTargetELFStreamer::RISCVTargetELFStreamer().
|
inline |
Definition at line 171 of file MCAssembler.h.
Referenced by computeFragmentSize(), layout(), reset(), and writeSectionData().
Definition at line 321 of file MCAssembler.cpp.
References A, assert(), llvm::MCExpr::evaluateAsValue(), llvm::MCExpr::getLoc(), llvm::MCSymbol::getName(), llvm::MCSymbol::isCommon(), and reportError().
|
inline |
Definition at line 169 of file MCAssembler.h.
References Context.
Referenced by llvm::MCELFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MipsTargetELFStreamer::emitFrame(), llvm::MCELFStreamer::emitIdent(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::ELFObjectWriter::executePostLayoutBinding(), llvm::MipsTargetELFStreamer::finish(), llvm::MCAsmBackend::getContext(), llvm::MCObjectWriter::getContext(), llvm::MCObjectTargetWriter::getContext(), GetOptionalAbsDifference(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), layout(), llvm::RISCVAsmBackend::maybeAddVendorReloc(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), reportError(), llvm::MCObjectTargetWriter::reportError(), and writeSectionData().
|
inline |
Definition at line 181 of file MCAssembler.h.
|
inline |
Definition at line 177 of file MCAssembler.h.
References Emitter.
Referenced by llvm::MCObjectStreamer::emitInstToFragment().
|
inline |
Definition at line 173 of file MCAssembler.h.
References Emitter.
Referenced by llvm::PPCELFStreamer::emitInstruction(), llvm::PPCXCOFFStreamer::emitInstruction(), reset(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().
|
inline |
Definition at line 139 of file MCAssembler.h.
References F.
Referenced by computeFragmentSize(), llvm::ARMAsmBackend::evaluateFixup(), llvm::CSKYAsmBackend::evaluateFixup(), llvm::RISCVAsmBackend::evaluateFixup(), llvm::MachObjectWriter::getFragmentAddress(), getSectionAddressSize(), and llvm::ELFObjectWriter::recordRelocation().
|
inline |
Definition at line 193 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitInstruction().
Definition at line 355 of file MCAssembler.cpp.
References assert(), llvm::MCSection::curFragList(), F, llvm::MCFragment::FT_Data, getFragmentOffset(), and llvm::MCSection::FragList::Tail.
Referenced by llvm::MachObjectWriter::computeSectionAddresses(), llvm::MachObjectWriter::getPaddingSize(), getSectionFileSize(), llvm::DXContainerObjectWriter::writeObject(), llvm::MachObjectWriter::writeObject(), llvm::MachObjectWriter::writeSection(), and writeSectionData().
Definition at line 361 of file MCAssembler.cpp.
References getSectionAddressSize(), and llvm::MCSection::isBssSection().
Referenced by llvm::MachObjectWriter::writeObject(), llvm::MachObjectWriter::writeSection(), and writeSectionData().
Definition at line 315 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Definition at line 311 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Referenced by computeFragmentSize(), llvm::RISCVAsmBackend::evaluateFixup(), llvm::MachObjectWriter::getSymbolAddress(), and llvm::ELFObjectWriter::recordRelocation().
|
inline |
Definition at line 199 of file MCAssembler.h.
|
inline |
Definition at line 179 of file MCAssembler.h.
Referenced by llvm::LoongArchAsmBackend::addReloc(), llvm::RISCVAsmBackend::addReloc(), llvm::AVRAsmBackend::applyFixup(), llvm::MCObjectStreamer::emitAddrsig(), llvm::MCObjectStreamer::emitAddrsigSym(), llvm::MCObjectStreamer::emitFileDirective(), Finish(), llvm::MCELFStreamer::getWriter(), llvm::MCGOFFStreamer::getWriter(), llvm::MCWinCOFFStreamer::getWriter(), llvm::MCXCOFFStreamer::getWriter(), layout(), llvm::MCAsmBackend::maybeAddReloc(), and llvm::RISCVAsmBackend::maybeAddVendorReloc().
|
inline |
Definition at line 192 of file MCAssembler.h.
|
inline |
Definition at line 191 of file MCAssembler.h.
Check whether a given symbol has been flagged with .thumb_func.
Definition at line 115 of file MCAssembler.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), isThumbFunc(), and Sym.
Referenced by llvm::ARMAsmBackend::adjustFixupValue(), and isThumbFunc().
void MCAssembler::layout | ( | ) |
Definition at line 617 of file MCAssembler.cpp.
References _, assert(), llvm::MCFixup::create(), llvm::Data, DEBUG_WITH_TYPE, dump(), llvm::errs(), llvm::MCObjectWriter::executePostLayoutBinding(), F, Fixup, flushPendingErrors(), llvm::MCValue::getAddSym(), getBackend(), getBackendPtr(), llvm::MCValue::getConstant(), getContext(), llvm::MCFragment::getNext(), llvm::MCValue::getSubSym(), getWriter(), llvm::mc::isRelocRelocation(), llvm::List, llvm::Offset, llvm::MCContext::reportError(), llvm::MCSection::setOrdinal(), llvm::SmallVectorBase< Size_T >::size(), Sym, and llvm::CallingConv::Tail.
Referenced by Finish().
|
delete |
Definition at line 1022 of file MCAssembler.cpp.
References llvm::Twine::str().
Referenced by computeFragmentSize().
Definition at line 107 of file MCAssembler.cpp.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by llvm::MCObjectStreamer::changeSection().
Definition at line 368 of file MCAssembler.cpp.
Referenced by llvm::MachObjectWriter::bindIndirectSymbols(), llvm::MCObjectStreamer::changeSection(), 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::MCWinCOFFStreamer::emitWeakReference(), llvm::ELFObjectWriter::executePostLayoutBinding(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::HexagonMCELFStreamer::HexagonMCEmitLocalCommonSymbol(), llvm::RISCVAsmBackend::maybeAddVendorReloc(), and llvm::LoongArchAsmBackend::relaxAlign().
Definition at line 1018 of file MCAssembler.cpp.
References getContext(), and llvm::MCContext::reportError().
Referenced by flushPendingErrors(), getBaseSymbol(), and writeSectionData().
void MCAssembler::reset | ( | ) |
Reuse an assembler instance.
Definition at line 90 of file MCAssembler.cpp.
References llvm::SmallVectorImpl< T >::clear(), getBackendPtr(), getEmitterPtr(), llvm::MCAsmBackend::reset(), and llvm::MCCodeEmitter::reset().
Flag a function symbol as the target of a .thumb_func directive.
Definition at line 163 of file MCAssembler.h.
References llvm::SmallPtrSetImpl< PtrType >::insert().
|
inline |
Definition at line 194 of file MCAssembler.h.
|
inline |
Definition at line 202 of file MCAssembler.h.
References llvm::make_pointee_range().
Referenced by llvm::MachObjectWriter::computeSymbolTable(), and dump().
void MCAssembler::writeSectionData | ( | raw_ostream & | OS, |
const MCSection * | Section | ||
) | const |
Emit the section contents to OS
.
Definition at line 556 of file MCAssembler.cpp.
References llvm::any_of(), assert(), F, flushPendingErrors(), llvm::MCFragment::FT_Align, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Fill, llvm::MCFragment::FT_Org, llvm::MCFragment::FT_Relaxable, getBackendPtr(), getContext(), getSectionAddressSize(), getSectionFileSize(), llvm::MCSection::isBssSection(), OS, reportError(), llvm::reportFatalInternalError(), llvm::raw_ostream::tell(), and writeFragment().
Referenced by llvm::DXContainerObjectWriter::writeObject(), and llvm::MachObjectWriter::writeObject().
|
friend |
Definition at line 51 of file MCAssembler.h.