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 79 of file MCAssembler.cpp.
References if(), and llvm::move().
Referenced by MCAssembler(), and operator=().
|
delete |
References MCAssembler().
void MCAssembler::addRelocDirective | ( | RelocDirective | RD | ) |
Definition at line 379 of file MCAssembler.cpp.
Referenced by llvm::MCObjectStreamer::emitRelocDirective().
|
inline |
Definition at line 197 of file MCAssembler.h.
uint64_t MCAssembler::computeFragmentSize | ( | const MCFragment & | F | ) | const |
Compute the effective fragment size.
Definition at line 194 of file MCAssembler.cpp.
References assert(), llvm::cast(), 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_SFrame, llvm::MCFragment::FT_SymbolId, getBackendPtr(), getFragmentOffset(), getSymbolOffset(), llvm_unreachable, recordError(), and Size.
LLVM_DUMP_METHOD void MCAssembler::dump | ( | ) | const |
Definition at line 1057 of file MCAssembler.cpp.
References llvm::MCSection::dump(), llvm::errs(), F, LLVM_DUMP_METHOD, symbols(), and llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::try_emplace().
Referenced by layout().
|
inline |
Definition at line 198 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 733 of file MCAssembler.cpp.
References assert(), getWriter(), layout(), and llvm::MCObjectWriter::writeObject().
Referenced by llvm::MCObjectStreamer::finishImpl().
void MCAssembler::flushPendingErrors | ( | ) | const |
Definition at line 1050 of file MCAssembler.cpp.
References reportError().
Referenced by layout(), and writeSectionData().
|
inline |
Definition at line 176 of file MCAssembler.h.
Referenced by layout(), llvm::LoongArchTargetELFStreamer::LoongArchTargetELFStreamer(), and llvm::RISCVTargetELFStreamer::RISCVTargetELFStreamer().
|
inline |
Definition at line 172 of file MCAssembler.h.
Referenced by computeFragmentSize(), layout(), reset(), and writeSectionData().
Definition at line 323 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 170 of file MCAssembler.h.
Referenced by llvm::MCELFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), llvm::MipsTargetELFStreamer::emitDirectiveCpsetup(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MipsTargetELFStreamer::emitFrame(), llvm::MCELFStreamer::emitIdent(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::MipsTargetELFStreamer::finish(), GetOptionalAbsDifference(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), layout(), llvm::MipsTargetELFStreamer::MipsTargetELFStreamer(), reportError(), and writeSectionData().
|
inline |
Definition at line 182 of file MCAssembler.h.
|
inline |
Definition at line 178 of file MCAssembler.h.
Referenced by llvm::MCObjectStreamer::emitInstToFragment().
|
inline |
Definition at line 174 of file MCAssembler.h.
Referenced by llvm::PPCELFStreamer::emitInstruction(), llvm::PPCXCOFFStreamer::emitInstruction(), reset(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().
|
inline |
Definition at line 140 of file MCAssembler.h.
References F.
Referenced by computeFragmentSize(), and getSectionAddressSize().
|
inline |
Definition at line 194 of file MCAssembler.h.
Definition at line 357 of file MCAssembler.cpp.
References assert(), llvm::MCSection::curFragList(), F, llvm::MCFragment::FT_Data, getFragmentOffset(), and llvm::MCSection::FragList::Tail.
Referenced by getSectionFileSize(), and writeSectionData().
Definition at line 363 of file MCAssembler.cpp.
References getSectionAddressSize(), and llvm::MCSection::isBssSection().
Referenced by writeSectionData().
Definition at line 317 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Definition at line 313 of file MCAssembler.cpp.
References getSymbolOffsetImpl().
Referenced by computeFragmentSize().
|
inline |
Definition at line 200 of file MCAssembler.h.
|
inline |
Definition at line 180 of file MCAssembler.h.
References MCObjectWriter.
Referenced by llvm::MCObjectStreamer::emitAddrsig(), llvm::MCObjectStreamer::emitAddrsigSym(), llvm::MCObjectStreamer::emitFileDirective(), Finish(), llvm::MCELFStreamer::getWriter(), llvm::MCGOFFStreamer::getWriter(), llvm::MCWinCOFFStreamer::getWriter(), llvm::MCXCOFFStreamer::getWriter(), and layout().
|
inline |
Definition at line 193 of file MCAssembler.h.
|
inline |
Definition at line 192 of file MCAssembler.h.
Check whether a given symbol has been flagged with .thumb_func.
Definition at line 116 of file MCAssembler.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), llvm::MCValue::getAddSym(), and isThumbFunc().
Referenced by isThumbFunc().
void MCAssembler::layout | ( | ) |
Definition at line 620 of file MCAssembler.cpp.
References _, assert(), llvm::MCFixup::create(), llvm::Data, 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(), and llvm::CallingConv::Tail.
Referenced by Finish().
|
delete |
References F, LLVM_ABI, and MCAssembler().
Definition at line 1046 of file MCAssembler.cpp.
References llvm::Twine::str().
Referenced by computeFragmentSize().
Definition at line 108 of file MCAssembler.cpp.
Referenced by llvm::MCObjectStreamer::changeSection().
Definition at line 370 of file MCAssembler.cpp.
References Changed.
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::MCObjectStreamer::emitLabel(), llvm::MipsTargetELFStreamer::emitLabel(), llvm::MCObjectStreamer::emitLabelAtPos(), llvm::MCELFStreamer::emitLocalCommonSymbol(), llvm::MCELFStreamer::emitSymbolAttribute(), llvm::MCWasmStreamer::emitSymbolAttribute(), llvm::MCWinCOFFStreamer::emitSymbolAttribute(), llvm::MCXCOFFStreamer::emitSymbolAttribute(), llvm::MCWinCOFFStreamer::emitWeakReference(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and llvm::HexagonMCELFStreamer::HexagonMCEmitLocalCommonSymbol().
Definition at line 1042 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 91 of file MCAssembler.cpp.
References getBackendPtr(), getEmitterPtr(), llvm::MCAsmBackend::reset(), and llvm::MCCodeEmitter::reset().
Flag a function symbol as the target of a .thumb_func directive.
Definition at line 164 of file MCAssembler.h.
|
inline |
Definition at line 195 of file MCAssembler.h.
|
inline |
Definition at line 203 of file MCAssembler.h.
References llvm::make_pointee_range().
Referenced by dump().
void MCAssembler::writeSectionData | ( | raw_ostream & | OS, |
const MCSection * | Section ) const |
Emit the section contents to OS
.
Definition at line 559 of file MCAssembler.cpp.
References llvm::any_of(), assert(), llvm::cast(), 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(), reportError(), llvm::reportFatalInternalError(), llvm::raw_ostream::tell(), and writeFragment().
|
friend |
Definition at line 51 of file MCAssembler.h.
References MCObjectWriter.
Referenced by getWriter(), and MCObjectWriter.