LLVM: llvm::RecordStreamer Class Reference (original) (raw)

Public Member Functions

RecordStreamer (MCContext &Context, const Module &M)

void

emitLabel (MCSymbol *Symbol, SMLoc Loc=SMLoc()) override

Emit a label for Symbol into the current section.

void

emitAssignment (MCSymbol *Symbol, const MCExpr *Value) override

Emit an assignment of [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") to Symbol.

bool

emitSymbolAttribute (MCSymbol *Symbol, MCSymbolAttr Attribute) override

Add the given [Attribute](classllvm%5F1%5F1Attribute.html "Functions, function parameters, and return types can have attributes to indicate how they should be t...") to Symbol.

void

emitZerofill (MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment, SMLoc Loc=SMLoc()) override

Emit the zerofill section and an optional symbol.

void

emitCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) override

Emit a common symbol.

void

emitSubsectionsViaSymbols () override

Emit a .subsection_via_symbols directive.

void

beginCOFFSymbolDef (const MCSymbol *Symbol) override

Start emitting COFF symbol definition.

void

emitCOFFSymbolStorageClass (int StorageClass) override

Emit the storage class of the symbol.

void

emitCOFFSymbolType (int Type) override

Emit the type of the symbol.

void

endCOFFSymbolDef () override

Marks the end of the symbol definition.

void

emitELFSymverDirective (const MCSymbol *OriginalSym, StringRef Name, bool KeepOriginalSym) override

Record .symver aliases for later processing.

void

flushSymverDirectives ()

const_iterator

begin ()

const_iterator

end ()

iterator_range< const_symver_iterator >

symverAliases ()

Public Member Functions inherited from llvm::MCStreamer

MCStreamer (const MCStreamer &)=delete

MCStreamer &

operator= (const MCStreamer &)=delete

virtual

~MCStreamer ()

void

visitUsedExpr (const MCExpr &Expr)

void

setTargetStreamer (MCTargetStreamer *TS)

void

setStartTokLocPtr (const SMLoc *Loc)

SMLoc

getStartTokLoc () const

virtual void

reset ()

State management.

MCContext &

getContext () const

bool

isObj () const

virtual MCAssembler *

getAssemblerPtr ()

void

setUseAssemblerInfoForParsing (bool v)

bool

getUseAssemblerInfoForParsing ()

MCTargetStreamer *

getTargetStreamer ()

void

setAllowAutoPadding (bool v)

bool

getAllowAutoPadding () const

MCSymbol *

emitLineTableLabel ()

virtual MCSymbol *

emitCFILabel ()

When emitting an object file, create and emit a real label.

WinEH::FrameInfo *

EnsureValidWinFrameInfo (SMLoc Loc)

Retrieve the current frame info if one is available and it is not yet closed.

unsigned

getNumFrameInfos ()

ArrayRef< MCDwarfFrameInfo >

getDwarfFrameInfos () const

bool

hasUnfinishedDwarfFrameInfo ()

unsigned

getNumWinFrameInfos ()

ArrayRef< std::unique_ptr< WinEH::FrameInfo > >

getWinFrameInfos () const

WinEH::FrameInfo::Epilog *

getCurrentWinEpilog () const

bool

isInEpilogCFI () const

void

generateCompactUnwindEncodings (MCAsmBackend *MAB)

virtual void

emitFileDirective (StringRef Filename)

Switch to a new logical file.

virtual void

emitFileDirective (StringRef Filename, StringRef CompilerVersion, StringRef TimeStamp, StringRef Description)

Emit ".file assembler diretive with additioal info.

virtual void

emitIdent (StringRef IdentString)

Emit the "identifiers" directive.

unsigned

emitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum=std::nullopt, std::optional< StringRef > Source=std::nullopt, unsigned CUID=0)

Associate a filename with a specified logical file number.

virtual Expected< unsigned >

tryEmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum=std::nullopt, std::optional< StringRef > Source=std::nullopt, unsigned CUID=0)

Associate a filename with a specified logical file number.

virtual void

emitDwarfFile0Directive (StringRef Directory, StringRef Filename, std::optional< MD5::MD5Result > Checksum, std::optional< StringRef > Source, unsigned CUID=0)

Specify the "root" file of the compilation, using the ".file 0" extension.

virtual void

emitCFIBKeyFrame ()

virtual void

emitCFIMTETaggedFrame ()

virtual void

emitDwarfLocDirective (unsigned FileNo, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName, StringRef Comment={})

This implements the DWARF2 '.loc fileno lineno ...' assembler directive.

virtual void

emitDwarfLocLabelDirective (SMLoc Loc, StringRef Name)

This implements the '.loc_label Name' directive.

virtual bool

emitCVFileDirective (unsigned FileNo, StringRef Filename, ArrayRef< uint8_t > Checksum, unsigned ChecksumKind)

Associate a filename with a specified logical file number, and also specify that file's checksum information.

virtual bool

emitCVFuncIdDirective (unsigned FunctionId)

Introduces a function id for use with .cv_loc.

virtual bool

emitCVInlineSiteIdDirective (unsigned FunctionId, unsigned IAFunc, unsigned IAFile, unsigned IALine, unsigned IACol, SMLoc Loc)

Introduces an inline call site id for use with .cv_loc.

virtual void

emitCVLocDirective (unsigned FunctionId, unsigned FileNo, unsigned Line, unsigned Column, bool PrologueEnd, bool IsStmt, StringRef FileName, SMLoc Loc)

This implements the CodeView '.cv_loc' assembler directive.

virtual void

emitCVLinetableDirective (unsigned FunctionId, const MCSymbol *FnStart, const MCSymbol *FnEnd)

This implements the CodeView '.cv_linetable' assembler directive.

virtual void

emitCVInlineLinetableDirective (unsigned PrimaryFunctionId, unsigned SourceFileId, unsigned SourceLineNum, const MCSymbol *FnStartSym, const MCSymbol *FnEndSym)

This implements the CodeView '.cv_inline_linetable' assembler directive.

virtual void

emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, StringRef FixedSizePortion)

This implements the CodeView '.cv_def_range' assembler directive.

virtual void

emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeRegisterRelHeader DRHdr)

virtual void

emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeSubfieldRegisterHeader DRHdr)

virtual void

emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeRegisterHeader DRHdr)

virtual void

emitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol * > > Ranges, codeview::DefRangeFramePointerRelHeader DRHdr)

virtual void

emitCVStringTableDirective ()

This implements the CodeView '.cv_stringtable' assembler directive.

virtual void

emitCVFileChecksumsDirective ()

This implements the CodeView '.cv_filechecksums' assembler directive.

virtual void

emitCVFileChecksumOffsetDirective (unsigned FileNo)

This implements the CodeView '.cv_filechecksumoffset' assembler directive.

virtual void

emitCVFPOData (const MCSymbol *ProcSym, SMLoc Loc={})

This implements the CodeView '.cv_fpo_data' assembler directive.

virtual void

emitAbsoluteSymbolDiff (const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size)

Emit the absolute difference between two symbols.

virtual void

emitAbsoluteSymbolDiffAsULEB128 (const MCSymbol *Hi, const MCSymbol *Lo)

Emit the absolute difference between two symbols encoded with ULEB128.

virtual MCSymbol *

getDwarfLineTableSymbol (unsigned CUID)

virtual void

emitCFISections (bool EH, bool Debug, bool SFrame)

void

emitCFIStartProc (bool IsSimple, SMLoc Loc=SMLoc())

void

emitCFIEndProc ()

virtual void

emitCFIDefCfa (int64_t Register, int64_t Offset, SMLoc Loc={})

virtual void

emitCFIDefCfaOffset (int64_t Offset, SMLoc Loc={})

virtual void

emitCFIDefCfaRegister (int64_t Register, SMLoc Loc={})

virtual void

emitCFILLVMDefAspaceCfa (int64_t Register, int64_t Offset, int64_t AddressSpace, SMLoc Loc={})

virtual void

emitCFIOffset (int64_t Register, int64_t Offset, SMLoc Loc={})

virtual void

emitCFIPersonality (const MCSymbol *Sym, unsigned Encoding)

virtual void

emitCFILsda (const MCSymbol *Sym, unsigned Encoding)

virtual void

emitCFIRememberState (SMLoc Loc)

virtual void

emitCFIRestoreState (SMLoc Loc)

virtual void

emitCFISameValue (int64_t Register, SMLoc Loc={})

virtual void

emitCFIRestore (int64_t Register, SMLoc Loc={})

virtual void

emitCFIRelOffset (int64_t Register, int64_t Offset, SMLoc Loc)

virtual void

emitCFIAdjustCfaOffset (int64_t Adjustment, SMLoc Loc={})

virtual void

emitCFIEscape (StringRef Values, SMLoc Loc={})

virtual void

emitCFIReturnColumn (int64_t Register)

virtual void

emitCFIGnuArgsSize (int64_t Size, SMLoc Loc={})

virtual void

emitCFISignalFrame ()

virtual void

emitCFIUndefined (int64_t Register, SMLoc Loc={})

virtual void

emitCFIRegister (int64_t Register1, int64_t Register2, SMLoc Loc={})

virtual void

emitCFIWindowSave (SMLoc Loc={})

virtual void

emitCFINegateRAState (SMLoc Loc={})

virtual void

emitCFINegateRAStateWithPC (SMLoc Loc={})

virtual void

emitCFILabelDirective (SMLoc Loc, StringRef Name)

virtual void

emitCFIValOffset (int64_t Register, int64_t Offset, SMLoc Loc={})

virtual void

emitWinCFIStartProc (const MCSymbol *Symbol, SMLoc Loc=SMLoc())

virtual void

emitWinCFIEndProc (SMLoc Loc=SMLoc())

virtual void

emitWinCFIFuncletOrFuncEnd (SMLoc Loc=SMLoc())

This is used on platforms, such as Windows on ARM64, that require function or funclet sizes to be emitted in .xdata before the End marker is emitted for the frame.

virtual void

emitWinCFIStartChained (SMLoc Loc=SMLoc())

virtual void

emitWinCFIEndChained (SMLoc Loc=SMLoc())

virtual void

emitWinCFIPushReg (MCRegister Register, SMLoc Loc=SMLoc())

virtual void

emitWinCFISetFrame (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())

virtual void

emitWinCFIAllocStack (unsigned Size, SMLoc Loc=SMLoc())

virtual void

emitWinCFISaveReg (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())

virtual void

emitWinCFISaveXMM (MCRegister Register, unsigned Offset, SMLoc Loc=SMLoc())

virtual void

emitWinCFIPushFrame (bool Code, SMLoc Loc=SMLoc())

virtual void

emitWinCFIEndProlog (SMLoc Loc=SMLoc())

virtual void

emitWinCFIBeginEpilogue (SMLoc Loc=SMLoc())

virtual void

emitWinCFIEndEpilogue (SMLoc Loc=SMLoc())

virtual void

emitWinCFIUnwindV2Start (SMLoc Loc=SMLoc())

virtual void

emitWinCFIUnwindVersion (uint8_t Version, SMLoc Loc=SMLoc())

virtual void

emitWinEHHandler (const MCSymbol *Sym, bool Unwind, bool Except, SMLoc Loc=SMLoc())

virtual void

emitWinEHHandlerData (SMLoc Loc=SMLoc())

virtual void

emitCGProfileEntry (const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count)

MCSection *

getAssociatedPDataSection (const MCSection *TextSec)

Get the .pdata section used for the given section.

MCSection *

getAssociatedXDataSection (const MCSection *TextSec)

Get the .xdata section used for the given section.

virtual void

emitSyntaxDirective ()

virtual void

emitRelocDirective (const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc={})

Record a relocation described by the .reloc directive.

virtual void

emitAddrsig ()

virtual void

emitAddrsigSym (const MCSymbol *Sym)

virtual void

emitInstruction (const MCInst &Inst, const MCSubtargetInfo &STI)

Emit the given [Instruction](classllvm%5F1%5F1Instruction.html) into the current section.

virtual void

emitPseudoProbe (uint64_t Guid, uint64_t Index, uint64_t Type, uint64_t Attr, uint64_t Discriminator, const MCPseudoProbeInlineStack &InlineStack, MCSymbol *FnSym)

Emit the a pseudo probe into the current section.

void

emitRawText (const Twine &String)

If this file is backed by a assembly streamer, this dumps the specified string in the output .s file.

virtual void

finishImpl ()

Streamer specific finalization.

void

finish (SMLoc EndLoc=SMLoc())

Finish emission of machine code.

virtual bool

mayHaveInstructions (MCSection &Sec) const

void

maybeEmitDwarf64Mark ()

Emit a special value of 0xffffffff if producing 64-bit debugging info.

virtual void

emitDwarfUnitLength (uint64_t Length, const Twine &Comment)

Emit a unit length field.

virtual MCSymbol *

emitDwarfUnitLength (const Twine &Prefix, const Twine &Comment)

Emit a unit length field.

virtual void

emitDwarfLineStartLabel (MCSymbol *StartSym)

Emit the debug line start label.

virtual void

emitDwarfLineEndEntry (MCSection *Section, MCSymbol *LastLabel, MCSymbol *EndLabel=nullptr)

Emit the debug line end entry.

virtual void

emitDwarfAdvanceLineAddr (int64_t LineDelta, const MCSymbol *LastLabel, const MCSymbol *Label, unsigned PointerSize)

If targets does not support representing debug line section by .loc/.file directives in assembly output, we need to populate debug line section with raw debug line contents.

virtual bool

isVerboseAsm () const

Return true if this streamer supports verbose assembly and if it is enabled.

virtual bool

hasRawTextSupport () const

Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.

virtual bool

isIntegratedAssemblerRequired () const

Is the integrated assembler required for this streamer to function correctly?

virtual void

AddComment (const Twine &T, bool EOL=true)

Add a textual comment.

virtual raw_ostream &

getCommentOS ()

Return a raw_ostream that comments can be written to.

virtual void

emitRawComment (const Twine &T, bool TabPrefix=true)

Print T and prefix it with the comment string (normally #) and optionally a tab.

virtual void

addExplicitComment (const Twine &T)

Add explicit comment T.

virtual void

emitExplicitComments ()

Emit added explicit comments.

virtual void

addBlankLine ()

Emit a blank line to a .s file to pretty it up.

MCSectionSubPair

getCurrentSection () const

Return the current section that the streamer is emitting code to.

MCSection *

getCurrentSectionOnly () const

MCSectionSubPair

getPreviousSection () const

Return the previous section that the streamer is emitting code to.

MCFragment *

getCurrentFragment () const

size_t

getCurFragSize () const

void

pushSection ()

Save the current and previous section on the section stack.

virtual bool

popSection ()

Restore the current and previous section from the section stack.

virtual void

switchSection (MCSection *Section, uint32_t Subsec=0)

Set the current section where code is being emitted to Section.

bool

switchSection (MCSection *Section, const MCExpr *)

void

switchSectionNoPrint (MCSection *Section)

Similar to switchSection, but does not print the section directive.

virtual void

initSections (bool NoExecStack, const MCSubtargetInfo &STI)

Create the default sections and set the initial one.

MCSymbol *

endSection (MCSection *Section)

virtual StringRef

getMnemonic (const MCInst &MI) const

Returns the mnemonic for MI, if the streamer has access to a instruction printer and returns an empty string otherwise.

virtual void

emitEHSymAttributes (const MCSymbol *Symbol, MCSymbol *EHSymbol)

virtual void

emitLinkerOptions (ArrayRef< std::string > Kind)

Emit the given list Options of strings as linker options into the output.

virtual void

emitDataRegion (MCDataRegionType Kind)

Note in the output the specified region Kind.

virtual void

emitVersionMin (MCVersionMinType Type, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)

Specify the Mach-O minimum deployment target version.

virtual void

emitBuildVersion (unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)

Emit/Specify Mach-O build version command.

virtual void

emitDarwinTargetVariantBuildVersion (unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)

void

emitVersionForTarget (const Triple &Target, const VersionTuple &SDKVersion, const Triple *DarwinTargetVariantTriple, const VersionTuple &DarwinTargetVariantSDKVersion)

virtual void

emitConditionalAssignment (MCSymbol *Symbol, const MCExpr *Value)

Emit an assignment of [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") to Symbol, but only if [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") is also emitted.

virtual void

emitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol)

Emit an weak reference from Alias to Symbol.

virtual void

emitSymbolDesc (MCSymbol *Symbol, unsigned DescValue)

Set the DescValue for the Symbol.

virtual void

emitCOFFSafeSEH (MCSymbol const *Symbol)

virtual void

emitCOFFSymbolIndex (MCSymbol const *Symbol)

Emits the symbol table index of a Symbol into the current section.

virtual void

emitCOFFSectionIndex (MCSymbol const *Symbol)

Emits a COFF section index.

virtual void

emitCOFFSecRel32 (MCSymbol const *Symbol, uint64_t Offset)

Emits a COFF section relative relocation.

virtual void

emitCOFFImgRel32 (MCSymbol const *Symbol, int64_t Offset)

Emits a COFF image relative relocation.

virtual void

emitCOFFSecNumber (MCSymbol const *Symbol)

Emits the physical number of the section containing the given symbol as assigned during object writing (i.e., this is not a runtime relocation).

virtual void

emitCOFFSecOffset (MCSymbol const *Symbol)

Emits the offset of the symbol from the beginning of the section during object writing (i.e., this is not a runtime relocation).

virtual void

emitXCOFFLocalCommonSymbol (MCSymbol *LabelSym, uint64_t Size, MCSymbol *CsectSym, Align Alignment)

Emits an lcomm directive with XCOFF csect information.

virtual void

emitXCOFFSymbolLinkageWithVisibility (MCSymbol *Symbol, MCSymbolAttr Linkage, MCSymbolAttr Visibility)

Emit a symbol's linkage and visibility with a linkage directive for XCOFF.

virtual void

emitXCOFFRenameDirective (const MCSymbol *Name, StringRef Rename)

Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.

virtual void

emitXCOFFExceptDirective (const MCSymbol *Symbol, const MCSymbol *Trap, unsigned Lang, unsigned Reason, unsigned FunctionSize, bool hasDebug)

Emit an XCOFF .except directive which adds information about a trap instruction to the object file exception section.

virtual void

emitXCOFFRefDirective (const MCSymbol *Symbol)

Emit a XCOFF .ref directive which creates R_REF type entry in the relocation table for one or more symbols.

virtual void

emitXCOFFCInfoSym (StringRef Name, StringRef Metadata)

Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.

virtual void

emitELFSize (MCSymbol *Symbol, const MCExpr *Value)

Emit an ELF .size directive.

virtual void

emitLOHDirective (MCLOHType Kind, const MCLOHArgs &Args)

Emit a Linker Optimization Hint (LOH) directive.

virtual void

emitGNUAttribute (unsigned Tag, unsigned Value)

Emit a .gnu_attribute directive.

virtual void

emitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)

Emit a local common (.lcomm) symbol.

virtual void

emitTBSSSymbol (MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment=Align(1))

Emit a thread local bss (.tbss) symbol.

virtual void

emitBytes (StringRef Data)

Emit the bytes in Data into the output.

virtual void

emitBinaryData (StringRef Data)

Functionally identical to EmitBytes.

virtual void

emitValueImpl (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())

Emit the expression [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") into the output as a native integer of the given Size bytes.

void

emitValue (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())

virtual void

emitIntValue (uint64_t Value, unsigned Size)

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.

virtual void

emitIntValue (const APInt &Value)

virtual void

emitIntValueInHex (uint64_t Value, unsigned Size)

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes.

void

emitInt8 (uint64_t Value)

void

emitInt16 (uint64_t Value)

void

emitInt32 (uint64_t Value)

void

emitInt64 (uint64_t Value)

virtual void

emitIntValueInHexWithPadding (uint64_t Value, unsigned Size)

Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes, pads the field with leading zeros to Size width.

virtual void

emitULEB128Value (const MCExpr *Value)

virtual void

emitSLEB128Value (const MCExpr *Value)

unsigned

emitULEB128IntValue (uint64_t Value, unsigned PadTo=0)

Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers.

unsigned

emitSLEB128IntValue (int64_t Value)

Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.

void

emitSymbolValue (const MCSymbol *Sym, unsigned Size, bool IsSectionRelative=false)

Special case of EmitValue that avoids the client having to pass in a MCExpr for MCSymbols.

void

emitFill (uint64_t NumBytes, uint8_t FillValue)

Emit NumBytes bytes worth of the value specified by FillValue.

virtual void

emitFill (const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc=SMLoc())

Emit Size bytes worth of the value specified by FillValue.

virtual void

emitFill (const MCExpr &NumValues, int64_t Size, int64_t Expr, SMLoc Loc=SMLoc())

Emit NumValues copies of Size bytes.

virtual void

emitNops (int64_t NumBytes, int64_t ControlledNopLength, SMLoc Loc, const MCSubtargetInfo &STI)

void

emitZeros (uint64_t NumBytes)

Emit NumBytes worth of zeros.

virtual void

emitValueToAlignment (Align Alignment, int64_t Fill=0, uint8_t FillLen=1, unsigned MaxBytesToEmit=0)

Emit some number of copies of [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") until the byte alignment ByteAlignment is reached.

virtual void

emitCodeAlignment (Align Alignment, const MCSubtargetInfo *STI, unsigned MaxBytesToEmit=0)

Emit nops until the byte alignment ByteAlignment is reached.

virtual void

emitValueToOffset (const MCExpr *Offset, unsigned char Value, SMLoc Loc)

Emit some number of copies of [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") until the byte offset Offset is reached.

Definition at line 25 of file RecordStreamer.h.