class MCObjectStreamer
Declaration
class MCObjectStreamer : public MCStreamer { /* full declaration omitted */ };
Description
Streaming object file generation interface. This class provides an implementation of the MCStreamer interface which is suitable for use with the assembler backend. Specific object file formats are expected to subclass this interface to implement directives specific to that file format or custom semantics expected by the object writer implementation.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:35
Inherits from: MCStreamer
Method Overview
- public void ChangeSection(llvm::MCSection * Section, const llvm::MCExpr * Subsection)
- public void EmitAddrsig()
- public void EmitAddrsigSym(const llvm::MCSymbol * Sym)
- public void EmitAssignment(llvm::MCSymbol * Symbol, const llvm::MCExpr * Value)
- public void EmitBundleAlignMode(unsigned int AlignPow2)
- public void EmitBundleLock(bool AlignToEnd)
- public void EmitBundleUnlock()
- public void EmitBytes(llvm::StringRef Data)
- public void EmitCFISections(bool EH, bool Debug)
- public void EmitCVDefRangeDirective(ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges, llvm::StringRef FixedSizePortion)
- public void EmitCVFileChecksumOffsetDirective(unsigned int FileNo)
- public void EmitCVFileChecksumsDirective()
- public void EmitCVInlineLinetableDirective(unsigned int PrimaryFunctionId, unsigned int SourceFileId, unsigned int SourceLineNum, const llvm::MCSymbol * FnStartSym, const llvm::MCSymbol * FnEndSym)
- public void EmitCVLinetableDirective(unsigned int FunctionId, const llvm::MCSymbol * Begin, const llvm::MCSymbol * End)
- public void EmitCVLocDirective(unsigned int FunctionId, unsigned int FileNo, unsigned int Line, unsigned int Column, bool PrologueEnd, bool IsStmt, llvm::StringRef FileName, llvm::SMLoc Loc)
- public void EmitCVStringTableDirective()
- public void EmitCodeAlignment(unsigned int ByteAlignment, unsigned int MaxBytesToEmit = 0)
- public void EmitDTPRel32Value(const llvm::MCExpr * Value)
- public void EmitDTPRel64Value(const llvm::MCExpr * Value)
- public void EmitDwarfAdvanceFrameAddr(const llvm::MCSymbol * LastLabel, const llvm::MCSymbol * Label)
- public void EmitDwarfAdvanceLineAddr(int64_t LineDelta, const llvm::MCSymbol * LastLabel, const llvm::MCSymbol * Label, unsigned int PointerSize)
- public void EmitDwarfLocDirective(unsigned int FileNo, unsigned int Line, unsigned int Column, unsigned int Flags, unsigned int Isa, unsigned int Discriminator, llvm::StringRef FileName)
- public void EmitFileDirective(llvm::StringRef Filename)
- public void EmitFrames(llvm::MCAsmBackend * MAB)
- public void EmitGPRel32Value(const llvm::MCExpr * Value)
- public void EmitGPRel64Value(const llvm::MCExpr * Value)
- public virtual void EmitInstToFragment(const llvm::MCInst & Inst, const llvm::MCSubtargetInfo &)
- public void EmitInstruction(const llvm::MCInst & Inst, const llvm::MCSubtargetInfo & STI)
- public void EmitLabel(llvm::MCSymbol * Symbol, llvm::SMLoc Loc = llvm::SMLoc())
- public virtual void EmitLabelAtPos(llvm::MCSymbol * Symbol, llvm::SMLoc Loc, llvm::MCFragment * F, uint64_t Offset)
- public bool EmitRelocDirective(const llvm::MCExpr & Offset, llvm::StringRef Name, const llvm::MCExpr * Expr, llvm::SMLoc Loc, const llvm::MCSubtargetInfo & STI)
- public void EmitSLEB128Value(const llvm::MCExpr * Value)
- public void EmitTPRel32Value(const llvm::MCExpr * Value)
- public void EmitTPRel64Value(const llvm::MCExpr * Value)
- public void EmitULEB128Value(const llvm::MCExpr * Value)
- public void EmitValueImpl(const llvm::MCExpr * Value, unsigned int Size, llvm::SMLoc Loc = llvm::SMLoc())
- public void EmitValueToAlignment(unsigned int ByteAlignment, int64_t Value = 0, unsigned int ValueSize = 1, unsigned int MaxBytesToEmit = 0)
- public void EmitWeakReference(llvm::MCSymbol * Alias, const llvm::MCSymbol * Symbol)
- public void FinishImpl()
- protected MCObjectStreamer(llvm::MCContext & Context, std::unique_ptr<MCAsmBackend> TAB, std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter)
- protected void addPendingLabel(llvm::MCSymbol * label)
- protected bool changeSectionImpl(llvm::MCSection * Section, const llvm::MCExpr * Subsection)
- public void emitAbsoluteSymbolDiff(const llvm::MCSymbol * Hi, const llvm::MCSymbol * Lo, unsigned int Size)
- public void emitAbsoluteSymbolDiffAsULEB128(const llvm::MCSymbol * Hi, const llvm::MCSymbol * Lo)
- public void emitFill(const llvm::MCExpr & NumBytes, uint64_t FillValue, llvm::SMLoc Loc = llvm::SMLoc())
- public void emitFill(const llvm::MCExpr & NumValues, int64_t Size, int64_t Expr, llvm::SMLoc Loc = llvm::SMLoc())
- public void emitValueToOffset(const llvm::MCExpr * Offset, unsigned char Value, llvm::SMLoc Loc)
- public void flushPendingLabels()
- protected void flushPendingLabels(llvm::MCFragment * F, uint64_t FOffset = 0)
- public llvm::MCAssembler & getAssembler()
- public llvm::MCAssembler * getAssemblerPtr()
- public llvm::MCFragment * getCurrentFragment() const
- public llvm::MCDataFragment * getOrCreateDataFragment(const llvm::MCSubtargetInfo * STI = nullptr)
- public void insert(llvm::MCFragment * F)
- public bool isIntegratedAssemblerRequired() const
- public bool mayHaveInstructions(llvm::MCSection & Sec) const
- public void reset()
- public void visitUsedSymbol(const llvm::MCSymbol & Sym)
- protected ~MCObjectStreamer()
Inherited from MCStreamer:
- public AddBlankLine
- public AddComment
- public AssignFragment
- public BeginCOFFSymbolDef
- public ChangeSection
- public EmitAddrsig
- public EmitAddrsigSym
- public EmitAssemblerFlag
- public EmitAssignment
- public EmitBinaryData
- public EmitBuildVersion
- public EmitBundleAlignMode
- public EmitBundleLock
- public EmitBundleUnlock
- public EmitBytes
- public EmitCFIAdjustCfaOffset
- public EmitCFIBKeyFrame
- public EmitCFIDefCfa
- public EmitCFIDefCfaOffset
- public EmitCFIDefCfaRegister
- public EmitCFIEndProc
- protected EmitCFIEndProcImpl
- public EmitCFIEscape
- public EmitCFIGnuArgsSize
- public EmitCFILabel
- public EmitCFILsda
- public EmitCFINegateRAState
- public EmitCFIOffset
- public EmitCFIPersonality
- public EmitCFIRegister
- public EmitCFIRelOffset
- public EmitCFIRememberState
- public EmitCFIRestore
- public EmitCFIRestoreState
- public EmitCFIReturnColumn
- public EmitCFISameValue
- public EmitCFISections
- public EmitCFISignalFrame
- public EmitCFIStartProc
- protected EmitCFIStartProcImpl
- public EmitCFIUndefined
- public EmitCFIWindowSave
- public EmitCOFFImgRel32
- public EmitCOFFSafeSEH
- public EmitCOFFSecRel32
- public EmitCOFFSectionIndex
- public EmitCOFFSymbolIndex
- public EmitCOFFSymbolStorageClass
- public EmitCOFFSymbolType
- public EmitCVDefRangeDirective
- public EmitCVDefRangeDirective
- public EmitCVDefRangeDirective
- public EmitCVDefRangeDirective
- public EmitCVDefRangeDirective
- public EmitCVFPOData
- public EmitCVFileChecksumOffsetDirective
- public EmitCVFileChecksumsDirective
- public EmitCVFileDirective
- public EmitCVFuncIdDirective
- public EmitCVInlineLinetableDirective
- public EmitCVInlineSiteIdDirective
- public EmitCVLinetableDirective
- public EmitCVLocDirective
- public EmitCVStringTableDirective
- public EmitCodeAlignment
- public EmitCodePaddingBasicBlockEnd
- public EmitCodePaddingBasicBlockStart
- public EmitCommonSymbol
- public EmitDTPRel32Value
- public EmitDTPRel64Value
- public EmitDataRegion
- public EmitDwarfFileDirective
- public EmitDwarfLocDirective
- public EmitEHSymAttributes
- public EmitFileDirective
- public EmitGPRel32Value
- public EmitGPRel64Value
- public EmitIdent
- public EmitInstruction
- public EmitIntValue
- public EmitIntValueInHex
- public EmitLOHDirective
- public EmitLabel
- public EmitLinkerOptions
- public EmitLocalCommonSymbol
- public EmitRawText
- protected EmitRawTextImpl
- public EmitRelocDirective
- public EmitSLEB128IntValue
- public EmitSLEB128Value
- public EmitSymbolAttribute
- public EmitSymbolDesc
- public EmitSymbolValue
- public EmitSyntaxDirective
- public EmitTBSSSymbol
- public EmitTPRel32Value
- public EmitTPRel64Value
- public EmitThumbFunc
- public EmitULEB128IntValue
- public EmitULEB128Value
- public EmitValue
- public EmitValueImpl
- public EmitValueToAlignment
- public EmitVersionForTarget
- public EmitVersionMin
- public EmitWeakReference
- public EmitWinCFIAllocStack
- public EmitWinCFIEndChained
- public EmitWinCFIEndProc
- public EmitWinCFIEndProlog
- public EmitWinCFIFuncletOrFuncEnd
- public EmitWinCFIPushFrame
- public EmitWinCFIPushReg
- public EmitWinCFISaveReg
- public EmitWinCFISaveXMM
- public EmitWinCFISetFrame
- public EmitWinCFIStartChained
- public EmitWinCFIStartProc
- public EmitWinEHHandler
- public EmitWinEHHandlerData
- protected EmitWindowsUnwindTables
- public EmitXCOFFLocalCommonSymbol
- public EmitZerofill
- public EmitZeros
- public EndCOFFSymbolDef
- public EnsureValidWinFrameInfo
- public Finish
- public FinishImpl
- public GetCommentOS
- public GetSymbolOrder
- public InitSections
- public PopSection
- public PushSection
- public SubSection
- public SwitchSection
- public SwitchSectionNoChange
- public addExplicitComment
- protected checkCVLocSection
- public emitAbsoluteSymbolDiff
- public emitAbsoluteSymbolDiffAsULEB128
- public emitCGProfileEntry
- public emitDwarfFile0Directive
- public emitELFSize
- public emitELFSymverDirective
- public emitExplicitComments
- public emitFill
- public emitFill
- public emitFill
- public emitRawComment
- public emitValueToOffset
- public endSection
- public generateCompactUnwindEncodings
- public getAllowAutoPadding
- public getAssemblerPtr
- public getAssociatedPDataSection
- public getAssociatedXDataSection
- public getContext
- public getCurrentSection
- public getCurrentSectionOnly
- protected getCurrentWinFrameInfo
- public getDwarfFrameInfos
- public getDwarfLineTableSymbol
- public getNumFrameInfos
- public getNumWinFrameInfos
- public getPreviousSection
- public getTargetStreamer
- public getUseAssemblerInfoForParsing
- public getWinFrameInfos
- public hasRawTextSupport
- public hasUnfinishedDwarfFrameInfo
- public isIntegratedAssemblerRequired
- public isVerboseAsm
- public mayHaveInstructions
- public reset
- public setAllowAutoPadding
- public setTargetStreamer
- public setUseAssemblerInfoForParsing
- public tryEmitDwarfFileDirective
- public visitUsedExpr
- public visitUsedSymbol
Methods
¶void ChangeSection(llvm::MCSection* Section,
const llvm::MCExpr* Subsection)
void ChangeSection(llvm::MCSection* Section,
const llvm::MCExpr* Subsection)
Description
Update streamer for a new active section. This is called by PopSection and SwitchSection, if the current section changes.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:125
Parameters
- llvm::MCSection* Section
- const llvm::MCExpr* Subsection
¶void EmitAddrsig()
void EmitAddrsig()
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:184
¶void EmitAddrsigSym(const llvm::MCSymbol* Sym)
void EmitAddrsigSym(const llvm::MCSymbol* Sym)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:185
Parameters
- const llvm::MCSymbol* Sym
¶void EmitAssignment(llvm::MCSymbol* Symbol,
const llvm::MCExpr* Value)
void EmitAssignment(llvm::MCSymbol* Symbol,
const llvm::MCExpr* Value)
Description
Emit an assignment of \p Value to \p Symbol. This corresponds to an assembler statement such as: symbol = value The assignment generates no code, but has the side effect of binding the value in the current context. For the assembly streamer, this prints the binding into the .s file.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:119
Parameters
- llvm::MCSymbol* Symbol
- - The symbol being assigned to.
- const llvm::MCExpr* Value
- - The value for the symbol.
¶void EmitBundleAlignMode(unsigned int AlignPow2)
void EmitBundleAlignMode(unsigned int AlignPow2)
Description
Set the bundle alignment mode from now on in the section. The argument is the power of 2 to which the alignment is set. The value 0 means turn the bundle alignment off.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:132
Parameters
- unsigned int AlignPow2
¶void EmitBundleLock(bool AlignToEnd)
void EmitBundleLock(bool AlignToEnd)
Description
The following instructions are a bundle-locked group.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:133
Parameters
- bool AlignToEnd
- - If true, the bundle-locked group will be aligned to the end of a bundle.
¶void EmitBundleUnlock()
void EmitBundleUnlock()
Description
Ends a bundle-locked group.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:134
¶void EmitBytes(llvm::StringRef Data)
void EmitBytes(llvm::StringRef Data)
Description
Emit the bytes in \p Data into the output. This is used to implement assembler directives such as .byte, .ascii, etc.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:135
Parameters
- llvm::StringRef Data
¶void EmitCFISections(bool EH, bool Debug)
void EmitCFISections(bool EH, bool Debug)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:73
Parameters
- bool EH
- bool Debug
¶void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol*,
const MCSymbol*>> Ranges,
llvm::StringRef FixedSizePortion)
void EmitCVDefRangeDirective(
ArrayRef<std::pair<const MCSymbol*,
const MCSymbol*>> Ranges,
llvm::StringRef FixedSizePortion)
Description
This implements the CodeView '.cv_def_range' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:162
Parameters
- ArrayRef< std::pair<const MCSymbol*, const MCSymbol*>> Ranges
- llvm::StringRef FixedSizePortion
¶void EmitCVFileChecksumOffsetDirective(
unsigned int FileNo)
void EmitCVFileChecksumOffsetDirective(
unsigned int FileNo)
Description
This implements the CodeView '.cv_filechecksumoffset' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:167
Parameters
- unsigned int FileNo
¶void EmitCVFileChecksumsDirective()
void EmitCVFileChecksumsDirective()
Description
This implements the CodeView '.cv_filechecksums' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:166
¶void EmitCVInlineLinetableDirective(
unsigned int PrimaryFunctionId,
unsigned int SourceFileId,
unsigned int SourceLineNum,
const llvm::MCSymbol* FnStartSym,
const llvm::MCSymbol* FnEndSym)
void EmitCVInlineLinetableDirective(
unsigned int PrimaryFunctionId,
unsigned int SourceFileId,
unsigned int SourceLineNum,
const llvm::MCSymbol* FnStartSym,
const llvm::MCSymbol* FnEndSym)
Description
This implements the CodeView '.cv_inline_linetable' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:157
Parameters
- unsigned int PrimaryFunctionId
- unsigned int SourceFileId
- unsigned int SourceLineNum
- const llvm::MCSymbol* FnStartSym
- const llvm::MCSymbol* FnEndSym
¶void EmitCVLinetableDirective(
unsigned int FunctionId,
const llvm::MCSymbol* Begin,
const llvm::MCSymbol* End)
void EmitCVLinetableDirective(
unsigned int FunctionId,
const llvm::MCSymbol* Begin,
const llvm::MCSymbol* End)
Description
This implements the CodeView '.cv_linetable' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:155
Parameters
- unsigned int FunctionId
- const llvm::MCSymbol* Begin
- const llvm::MCSymbol* End
¶void EmitCVLocDirective(unsigned int FunctionId,
unsigned int FileNo,
unsigned int Line,
unsigned int Column,
bool PrologueEnd,
bool IsStmt,
llvm::StringRef FileName,
llvm::SMLoc Loc)
void EmitCVLocDirective(unsigned int FunctionId,
unsigned int FileNo,
unsigned int Line,
unsigned int Column,
bool PrologueEnd,
bool IsStmt,
llvm::StringRef FileName,
llvm::SMLoc Loc)
Description
This implements the CodeView '.cv_loc' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:152
Parameters
- unsigned int FunctionId
- unsigned int FileNo
- unsigned int Line
- unsigned int Column
- bool PrologueEnd
- bool IsStmt
- llvm::StringRef FileName
- llvm::SMLoc Loc
¶void EmitCVStringTableDirective()
void EmitCVStringTableDirective()
Description
This implements the CodeView '.cv_stringtable' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:165
¶void EmitCodeAlignment(
unsigned int ByteAlignment,
unsigned int MaxBytesToEmit = 0)
void EmitCodeAlignment(
unsigned int ByteAlignment,
unsigned int MaxBytesToEmit = 0)
Description
Emit nops until the byte alignment \p ByteAlignment is reached. This used to align code where the alignment bytes may be executed. This can emit different bytes for different sizes to optimize execution.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:139
Parameters
- unsigned int ByteAlignment
- - The alignment to reach. This must be a power of two on some targets.
- unsigned int MaxBytesToEmit = 0
- - The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.
¶void EmitDTPRel32Value(const llvm::MCExpr* Value)
void EmitDTPRel32Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a dtprel (32-bit DTP relative) value. This is used to implement assembler directives such as .dtprelword on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:168
Parameters
- const llvm::MCExpr* Value
¶void EmitDTPRel64Value(const llvm::MCExpr* Value)
void EmitDTPRel64Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a dtprel (64-bit DTP relative) value. This is used to implement assembler directives such as .dtpreldword on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:169
Parameters
- const llvm::MCExpr* Value
¶void EmitDwarfAdvanceFrameAddr(
const llvm::MCSymbol* LastLabel,
const llvm::MCSymbol* Label)
void EmitDwarfAdvanceFrameAddr(
const llvm::MCSymbol* LastLabel,
const llvm::MCSymbol* Label)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:150
Parameters
- const llvm::MCSymbol* LastLabel
- const llvm::MCSymbol* Label
¶void EmitDwarfAdvanceLineAddr(
int64_t LineDelta,
const llvm::MCSymbol* LastLabel,
const llvm::MCSymbol* Label,
unsigned int PointerSize)
void EmitDwarfAdvanceLineAddr(
int64_t LineDelta,
const llvm::MCSymbol* LastLabel,
const llvm::MCSymbol* Label,
unsigned int PointerSize)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:147
Parameters
- int64_t LineDelta
- const llvm::MCSymbol* LastLabel
- const llvm::MCSymbol* Label
- unsigned int PointerSize
¶void EmitDwarfLocDirective(
unsigned int FileNo,
unsigned int Line,
unsigned int Column,
unsigned int Flags,
unsigned int Isa,
unsigned int Discriminator,
llvm::StringRef FileName)
void EmitDwarfLocDirective(
unsigned int FileNo,
unsigned int Line,
unsigned int Column,
unsigned int Flags,
unsigned int Isa,
unsigned int Discriminator,
llvm::StringRef FileName)
Description
This implements the DWARF2 '.loc fileno lineno ...' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:143
Parameters
- unsigned int FileNo
- unsigned int Line
- unsigned int Column
- unsigned int Flags
- unsigned int Isa
- unsigned int Discriminator
- llvm::StringRef FileName
¶void EmitFileDirective(llvm::StringRef Filename)
void EmitFileDirective(llvm::StringRef Filename)
Description
Switch to a new logical file. This is used to implement the '.file "foo.c"' assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:182
Parameters
- llvm::StringRef Filename
¶void EmitFrames(llvm::MCAsmBackend* MAB)
void EmitFrames(llvm::MCAsmBackend* MAB)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:72
Parameters
- llvm::MCAsmBackend* MAB
¶void EmitGPRel32Value(const llvm::MCExpr* Value)
void EmitGPRel32Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a gprel32 (32-bit GP relative) value. This is used to implement assembler directives such as .gprel32 on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:172
Parameters
- const llvm::MCExpr* Value
¶void EmitGPRel64Value(const llvm::MCExpr* Value)
void EmitGPRel64Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a gprel64 (64-bit GP relative) value. This is used to implement assembler directives such as .gpdword on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:173
Parameters
- const llvm::MCExpr* Value
¶virtual void EmitInstToFragment(
const llvm::MCInst& Inst,
const llvm::MCSubtargetInfo&)
virtual void EmitInstToFragment(
const llvm::MCInst& Inst,
const llvm::MCSubtargetInfo&)
Description
Emit an instruction to a special fragment, because this instruction can change its size during relaxation.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:130
Parameters
- const llvm::MCInst& Inst
- const llvm::MCSubtargetInfo&
¶void EmitInstruction(
const llvm::MCInst& Inst,
const llvm::MCSubtargetInfo& STI)
void EmitInstruction(
const llvm::MCInst& Inst,
const llvm::MCSubtargetInfo& STI)
Description
Emit the given \p Instruction into the current section.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:126
Parameters
- const llvm::MCInst& Inst
- const llvm::MCSubtargetInfo& STI
¶void EmitLabel(llvm::MCSymbol* Symbol,
llvm::SMLoc Loc = llvm::SMLoc())
void EmitLabel(llvm::MCSymbol* Symbol,
llvm::SMLoc Loc = llvm::SMLoc())
Description
@ {
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:116
Parameters
- llvm::MCSymbol* Symbol
- llvm::SMLoc Loc = llvm::SMLoc()
¶virtual void EmitLabelAtPos(
llvm::MCSymbol* Symbol,
llvm::SMLoc Loc,
llvm::MCFragment* F,
uint64_t Offset)
virtual void EmitLabelAtPos(
llvm::MCSymbol* Symbol,
llvm::SMLoc Loc,
llvm::MCFragment* F,
uint64_t Offset)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:117
Parameters
- llvm::MCSymbol* Symbol
- llvm::SMLoc Loc
- llvm::MCFragment* F
- uint64_t Offset
¶bool EmitRelocDirective(
const llvm::MCExpr& Offset,
llvm::StringRef Name,
const llvm::MCExpr* Expr,
llvm::SMLoc Loc,
const llvm::MCSubtargetInfo& STI)
bool EmitRelocDirective(
const llvm::MCExpr& Offset,
llvm::StringRef Name,
const llvm::MCExpr* Expr,
llvm::SMLoc Loc,
const llvm::MCSubtargetInfo& STI)
Description
Emit a .reloc directive. Returns true if the relocation could not be emitted because Name is not known.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:174
Parameters
- const llvm::MCExpr& Offset
- llvm::StringRef Name
- const llvm::MCExpr* Expr
- llvm::SMLoc Loc
- const llvm::MCSubtargetInfo& STI
¶void EmitSLEB128Value(const llvm::MCExpr* Value)
void EmitSLEB128Value(const llvm::MCExpr* Value)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:123
Parameters
- const llvm::MCExpr* Value
¶void EmitTPRel32Value(const llvm::MCExpr* Value)
void EmitTPRel32Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a tprel (32-bit TP relative) value. This is used to implement assembler directives such as .tprelword on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:170
Parameters
- const llvm::MCExpr* Value
¶void EmitTPRel64Value(const llvm::MCExpr* Value)
void EmitTPRel64Value(const llvm::MCExpr* Value)
Description
Emit the expression \p Value into the output as a tprel (64-bit TP relative) value. This is used to implement assembler directives such as .tpreldword on targets that support them.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:171
Parameters
- const llvm::MCExpr* Value
¶void EmitULEB128Value(const llvm::MCExpr* Value)
void EmitULEB128Value(const llvm::MCExpr* Value)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:122
Parameters
- const llvm::MCExpr* Value
¶void EmitValueImpl(
const llvm::MCExpr* Value,
unsigned int Size,
llvm::SMLoc Loc = llvm::SMLoc())
void EmitValueImpl(
const llvm::MCExpr* Value,
unsigned int Size,
llvm::SMLoc Loc = llvm::SMLoc())
Description
Emit the expression \p Value into the output as a native integer of the given \p Size bytes. This is used to implement assembler directives such as .word, .quad, etc.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:120
Parameters
- const llvm::MCExpr* Value
- - The value to emit.
- unsigned int Size
- - The size of the integer (in bytes) to emit. This must match a native machine width.
- llvm::SMLoc Loc = llvm::SMLoc()
- - The location of the expression for error reporting.
¶void EmitValueToAlignment(
unsigned int ByteAlignment,
int64_t Value = 0,
unsigned int ValueSize = 1,
unsigned int MaxBytesToEmit = 0)
void EmitValueToAlignment(
unsigned int ByteAlignment,
int64_t Value = 0,
unsigned int ValueSize = 1,
unsigned int MaxBytesToEmit = 0)
Description
Emit some number of copies of \p Value until the byte alignment \p ByteAlignment is reached. If the number of bytes need to emit for the alignment is not a multiple of \p ValueSize, then the contents of the emitted fill bytes is undefined. This used to implement the .align assembler directive.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:136
Parameters
- unsigned int ByteAlignment
- - The alignment to reach. This must be a power of two on some targets.
- int64_t Value = 0
- - The value to use when filling bytes.
- unsigned int ValueSize = 1
- - The size of the integer (in bytes) to emit for\p Value. This must match a native machine width.
- unsigned int MaxBytesToEmit = 0
- - The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted.
¶void EmitWeakReference(
llvm::MCSymbol* Alias,
const llvm::MCSymbol* Symbol)
void EmitWeakReference(
llvm::MCSymbol* Alias,
const llvm::MCSymbol* Symbol)
Description
Emit an weak reference from \p Alias to \p Symbol. This corresponds to an assembler statement such as: .weakref alias, symbol
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:124
Parameters
- llvm::MCSymbol* Alias
- - The alias that is being created.
- const llvm::MCSymbol* Symbol
- - The symbol being aliased.
¶void FinishImpl()
void FinishImpl()
Description
Streamer specific finalization.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:187
¶MCObjectStreamer(
llvm::MCContext& Context,
std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter)
MCObjectStreamer(
llvm::MCContext& Context,
std::unique_ptr<MCAsmBackend> TAB,
std::unique_ptr<MCObjectWriter> OW,
std::unique_ptr<MCCodeEmitter> Emitter)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:60
Parameters
- llvm::MCContext& Context
- std::unique_ptr<MCAsmBackend> TAB
- std::unique_ptr<MCObjectWriter> OW
- std::unique_ptr<MCCodeEmitter> Emitter
¶void addPendingLabel(llvm::MCSymbol* label)
void addPendingLabel(llvm::MCSymbol* label)
Description
Assign a label to the current Section and Subsection even though a fragment is not yet present. Use flushPendingLabels(F) to associate a fragment with this label.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:96
Parameters
- llvm::MCSymbol* label
¶bool changeSectionImpl(
llvm::MCSection* Section,
const llvm::MCExpr* Subsection)
bool changeSectionImpl(
llvm::MCSection* Section,
const llvm::MCExpr* Subsection)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:91
Parameters
- llvm::MCSection* Section
- const llvm::MCExpr* Subsection
¶void emitAbsoluteSymbolDiff(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Size)
void emitAbsoluteSymbolDiff(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo,
unsigned int Size)
Description
Emit the absolute difference between two symbols if possible. Emit the absolute difference between \c Hi and \c Lo, as long as we can compute it. Currently, that requires that both symbols are in the same data fragment and that the target has not specified that diff expressions require relocations to be emitted. Otherwise, do nothing and return\c false.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:198
Parameters
- const llvm::MCSymbol* Hi
- const llvm::MCSymbol* Lo
- unsigned int Size
¶void emitAbsoluteSymbolDiffAsULEB128(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo)
void emitAbsoluteSymbolDiffAsULEB128(
const llvm::MCSymbol* Hi,
const llvm::MCSymbol* Lo)
Description
Emit the absolute difference between two symbols encoded with ULEB128.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:201
Parameters
- const llvm::MCSymbol* Hi
- const llvm::MCSymbol* Lo
¶void emitFill(const llvm::MCExpr& NumBytes,
uint64_t FillValue,
llvm::SMLoc Loc = llvm::SMLoc())
void emitFill(const llvm::MCExpr& NumBytes,
uint64_t FillValue,
llvm::SMLoc Loc = llvm::SMLoc())
Description
Emit \p Size bytes worth of the value specified by \p FillValue. This is used to implement assembler directives such as .space or .skip.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:178
Parameters
- const llvm::MCExpr& NumBytes
- - The number of bytes to emit.
- uint64_t FillValue
- - The value to use when filling bytes.
- llvm::SMLoc Loc = llvm::SMLoc()
- - The location of the expression for error reporting.
¶void emitFill(const llvm::MCExpr& NumValues,
int64_t Size,
int64_t Expr,
llvm::SMLoc Loc = llvm::SMLoc())
void emitFill(const llvm::MCExpr& NumValues,
int64_t Size,
int64_t Expr,
llvm::SMLoc Loc = llvm::SMLoc())
Description
Emit \p NumValues copies of \p Size bytes. Each \p Size bytes is taken from the lowest order 4 bytes of \p Expr expression. This is used to implement assembler directives such as .fill.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:180
Parameters
- const llvm::MCExpr& NumValues
- - The number of copies of \p Size bytes to emit.
- int64_t Size
- - The size (in bytes) of each repeated value.
- int64_t Expr
- - The expression from which \p Size bytes are used.
- llvm::SMLoc Loc = llvm::SMLoc()
¶void emitValueToOffset(const llvm::MCExpr* Offset,
unsigned char Value,
llvm::SMLoc Loc)
void emitValueToOffset(const llvm::MCExpr* Offset,
unsigned char Value,
llvm::SMLoc Loc)
Description
Emit some number of copies of \p Value until the byte offset \p Offset is reached. This is used to implement assembler directives such as .org.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:141
Parameters
- const llvm::MCExpr* Offset
- - The offset to reach. This may be an expression, but the expression must be associated with the current section.
- unsigned char Value
- - The value to use when filling bytes.
- llvm::SMLoc Loc
¶void flushPendingLabels()
void flushPendingLabels()
Description
Create a data fragment for any pending labels across all Sections and Subsections.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:109
¶void flushPendingLabels(llvm::MCFragment* F,
uint64_t FOffset = 0)
void flushPendingLabels(llvm::MCFragment* F,
uint64_t FOffset = 0)
Description
If any labels have been emitted but not assigned fragments in the current Section and Subsection, ensure that they get assigned, either to fragment F if possible or to a new data fragment. Optionally, one can provide an offset \p FOffset as a symbol offset within the fragment.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:102
Parameters
- llvm::MCFragment* F
- uint64_t FOffset = 0
¶llvm::MCAssembler& getAssembler()
llvm::MCAssembler& getAssembler()
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:111
¶llvm::MCAssembler* getAssemblerPtr()
llvm::MCAssembler* getAssemblerPtr()
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:112
¶llvm::MCFragment* getCurrentFragment() const
llvm::MCFragment* getCurrentFragment() const
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:75
¶llvm::MCDataFragment* getOrCreateDataFragment(
const llvm::MCSubtargetInfo* STI = nullptr)
llvm::MCDataFragment* getOrCreateDataFragment(
const llvm::MCSubtargetInfo* STI = nullptr)
Description
Get a data fragment to write into, creating a new one if the current fragment is not a data fragment. Optionally a \p STI can be passed in so that a new fragment is created if the Subtarget differs from the current fragment.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:88
Parameters
- const llvm::MCSubtargetInfo* STI = nullptr
¶void insert(llvm::MCFragment* F)
void insert(llvm::MCFragment* F)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:77
Parameters
¶bool isIntegratedAssemblerRequired() const
bool isIntegratedAssemblerRequired() const
Description
Object streamers require the integrated assembler.
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:70
¶bool mayHaveInstructions(
llvm::MCSection& Sec) const
bool mayHaveInstructions(
llvm::MCSection& Sec) const
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:204
Parameters
- llvm::MCSection& Sec
¶void reset()
void reset()
Description
state management
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:67
¶void visitUsedSymbol(const llvm::MCSymbol& Sym)
void visitUsedSymbol(const llvm::MCSymbol& Sym)
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:105
Parameters
- const llvm::MCSymbol& Sym
¶~MCObjectStreamer()
~MCObjectStreamer()
Declared at: llvm/include/llvm/MC/MCObjectStreamer.h:63