LLVM 22.0.0git
Public Types | Public Member Functions | Friends | List of all members
llvm::MCAssembler Class Reference

#include "llvm/MC/MCAssembler.h"

Public Types

Public Member Functions

LLVM_ABI  MCAssembler (MCContext &Context, std::unique_ptr< MCAsmBackend > Backend, std::unique_ptr< MCCodeEmitter > Emitter, std::unique_ptr< MCObjectWriter > Writer)
  Construct a new assembler instance.
  Compute the effective fragment size.
  Emit the section contents to OS.
  Check whether a given symbol has been flagged with .thumb_func.
void  setIsThumbFunc (const MCSymbol *Func)
  Flag a function symbol as the target of a .thumb_func directive.
LLVM_ABI void  reset ()
  Reuse an assembler instance.
LLVM_ABI void  Finish ()
  Finish - Do final processing and write the object to the output stream.
LLVM_ABI void  layout ()
LLVM_ABI void  addRelocDirective (RelocDirective RD)
LLVM_ABI void  dump () const

Friends

class  MCObjectWriter

Detailed Description

Definition at line 49 of file MCAssembler.h.

Member Typedef Documentation

◆  const_iterator

Definition at line 53 of file MCAssembler.h.

◆  SectionListType

Definition at line 52 of file MCAssembler.h.

Constructor & Destructor Documentation

◆  MCAssembler() [1/2]

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=().

◆  MCAssembler() [2/2]

llvm::MCAssembler::MCAssembler ( const MCAssembler & )
delete

References MCAssembler().

Member Function Documentation

◆  addRelocDirective()

void MCAssembler::addRelocDirective ( RelocDirective RD )

Definition at line 379 of file MCAssembler.cpp.

Referenced by llvm::MCObjectStreamer::emitRelocDirective().

◆  begin()

const_iterator llvm::MCAssembler::begin ( ) const
inline

Definition at line 197 of file MCAssembler.h.

◆  computeFragmentSize()

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.

◆  dump()

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().

◆  end()

const_iterator llvm::MCAssembler::end ( ) const
inline

Definition at line 198 of file MCAssembler.h.

◆  Finish()

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().

◆  flushPendingErrors()

void MCAssembler::flushPendingErrors ( ) const

Definition at line 1050 of file MCAssembler.cpp.

References reportError().

Referenced by layout(), and writeSectionData().

◆  getBackend()

MCAsmBackend & llvm::MCAssembler::getBackend ( ) const
inline

Definition at line 176 of file MCAssembler.h.

Referenced by layout(), llvm::LoongArchTargetELFStreamer::LoongArchTargetELFStreamer(), and llvm::RISCVTargetELFStreamer::RISCVTargetELFStreamer().

◆  getBackendPtr()

MCAsmBackend * llvm::MCAssembler::getBackendPtr ( ) const
inline

Definition at line 172 of file MCAssembler.h.

Referenced by computeFragmentSize(), layout(), reset(), and writeSectionData().

◆  getBaseSymbol()

const MCSymbol * MCAssembler::getBaseSymbol ( const MCSymbol & Symbol ) const

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().

◆  getContext()

MCContext & llvm::MCAssembler::getContext ( ) const
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().

◆  getDWARFLinetableParams()

MCDwarfLineTableParams llvm::MCAssembler::getDWARFLinetableParams ( ) const
inline

Definition at line 182 of file MCAssembler.h.

◆  getEmitter()

MCCodeEmitter & llvm::MCAssembler::getEmitter ( ) const
inline

Definition at line 178 of file MCAssembler.h.

Referenced by llvm::MCObjectStreamer::emitInstToFragment().

◆  getEmitterPtr()

MCCodeEmitter * llvm::MCAssembler::getEmitterPtr ( ) const
inline

Definition at line 174 of file MCAssembler.h.

Referenced by llvm::PPCELFStreamer::emitInstruction(), llvm::PPCXCOFFStreamer::emitInstruction(), reset(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().

◆  getFragmentOffset()

uint64_t llvm::MCAssembler::getFragmentOffset ( const MCFragment & F ) const
inline

Definition at line 140 of file MCAssembler.h.

References F.

Referenced by computeFragmentSize(), and getSectionAddressSize().

◆  getRelaxAll()

bool llvm::MCAssembler::getRelaxAll ( ) const
inline

Definition at line 194 of file MCAssembler.h.

◆  getSectionAddressSize()

uint64_t MCAssembler::getSectionAddressSize ( const MCSection & Sec ) const

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().

◆  getSectionFileSize()

uint64_t MCAssembler::getSectionFileSize ( const MCSection & Sec ) const

Definition at line 363 of file MCAssembler.cpp.

References getSectionAddressSize(), and llvm::MCSection::isBssSection().

Referenced by writeSectionData().

◆  getSymbolOffset() [1/2]

uint64_t MCAssembler::getSymbolOffset ( const MCSymbol & S ) const

Definition at line 317 of file MCAssembler.cpp.

References getSymbolOffsetImpl().

◆  getSymbolOffset() [2/2]

bool MCAssembler::getSymbolOffset ( const MCSymbol & S,
uint64_t & Val ) const

Definition at line 313 of file MCAssembler.cpp.

References getSymbolOffsetImpl().

Referenced by computeFragmentSize().

◆  getSymbols()

SmallVectorImpl< const MCSymbol * > & llvm::MCAssembler::getSymbols ( )
inline

Definition at line 200 of file MCAssembler.h.

◆  getWriter()

MCObjectWriter & llvm::MCAssembler::getWriter ( ) const
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().

◆  hasFinalLayout()

bool llvm::MCAssembler::hasFinalLayout ( ) const
inline

Definition at line 193 of file MCAssembler.h.

◆  hasLayout()

bool llvm::MCAssembler::hasLayout ( ) const
inline

Definition at line 192 of file MCAssembler.h.

◆  isThumbFunc()

bool MCAssembler::isThumbFunc ( const MCSymbol * Func ) const

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().

◆  layout()

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().

◆  operator=()

MCAssembler & llvm::MCAssembler::operator= ( const MCAssembler & )
delete

References F, LLVM_ABI, and MCAssembler().

◆  recordError()

void MCAssembler::recordError ( SMLoc L,
const Twine & Msg ) const

Definition at line 1046 of file MCAssembler.cpp.

References llvm::Twine::str().

Referenced by computeFragmentSize().

◆  registerSection()

bool MCAssembler::registerSection ( MCSection & Section )

Definition at line 108 of file MCAssembler.cpp.

Referenced by llvm::MCObjectStreamer::changeSection().

◆  registerSymbol()

bool MCAssembler::registerSymbol ( const MCSymbol & Symbol )

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().

◆  reportError()

void MCAssembler::reportError ( SMLoc L,
const Twine & Msg ) const

Definition at line 1042 of file MCAssembler.cpp.

References getContext(), and llvm::MCContext::reportError().

Referenced by flushPendingErrors(), getBaseSymbol(), and writeSectionData().

◆  reset()

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().

◆  setIsThumbFunc()

void llvm::MCAssembler::setIsThumbFunc ( const MCSymbol * Func )
inline

Flag a function symbol as the target of a .thumb_func directive.

Definition at line 164 of file MCAssembler.h.

◆  setRelaxAll()

void llvm::MCAssembler::setRelaxAll ( bool Value )
inline

Definition at line 195 of file MCAssembler.h.

◆  symbols()

iterator_range< pointee_iterator< SmallVector< const MCSymbol *, 0 >::const_iterator > > llvm::MCAssembler::symbols ( ) const
inline

Definition at line 203 of file MCAssembler.h.

References llvm::make_pointee_range().

Referenced by dump().

◆  writeSectionData()

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().

◆  MCObjectWriter

friend class MCObjectWriter
friend

Definition at line 51 of file MCAssembler.h.

References MCObjectWriter.

Referenced by getWriter(), and MCObjectWriter.


The documentation for this class was generated from the following files:

Generated on for LLVM by doxygen 1.14.0

AltStyle によって変換されたページ (->オリジナル) /