[#llvm-MCStreamer] = xref:llvm.adoc[llvm]::MCStreamer :relfileprefix: ../ :mrdocs: Streaming machine code generation interface. == Synopsis Declared in `<llvm/MC/MCStreamer.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class MCStreamer; ---- == Description This interface is intended to provide a programmatic interface that is very similar to the level that an assembler .s file provides. It has callbacks to emit bytes, handle directives, etc. The implementation of this interface retains state to know what the current section is etc. There are multiple implementations of this interface: one for writing out a .s file, and implementations that write out .o files of various formats. == Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/MCStreamer/2constructor-0f.adoc[`MCStreamer`] [.small]#[constructor]# [.small]#[deleted]# | Deleted copy constructor. | xref:llvm/MCStreamer/2destructor.adoc[`~MCStreamer`] [.small]#[destructor]# [.small]#[virtual]# | Destroy the streamer. | xref:llvm/MCStreamer/operator_assign.adoc[`operator=`] [.small]#[deleted]# | Deleted copy assignment. | xref:llvm/MCStreamer/AddComment.adoc[`AddComment`] [.small]#[virtual]# | Add a textual comment. | xref:llvm/MCStreamer/EnsureValidWinFrameInfo.adoc[`EnsureValidWinFrameInfo`] | Retrieve the current frame info if one is available and it is not yet closed. Otherwise, issue an error and return null. | xref:llvm/MCStreamer/addBlankLine.adoc[`addBlankLine`] [.small]#[virtual]# | Emit a blank line to a .s file to pretty it up. | xref:llvm/MCStreamer/addExplicitComment.adoc[`addExplicitComment`] [.small]#[virtual]# | Add explicit comment T. T is required to be a valid comment in the output and does not need to be escaped. | xref:llvm/MCStreamer/beginCOFFSymbolDef.adoc[`beginCOFFSymbolDef`] [.small]#[virtual]# | Start emitting COFF symbol definition | xref:llvm/MCStreamer/emitAbsoluteSymbolDiff.adoc[`emitAbsoluteSymbolDiff`] [.small]#[virtual]# | Emit the absolute difference between two symbols. | xref:llvm/MCStreamer/emitAbsoluteSymbolDiffAsULEB128.adoc[`emitAbsoluteSymbolDiffAsULEB128`] [.small]#[virtual]# | Emit the absolute difference between two symbols encoded with ULEB128. | xref:llvm/MCStreamer/emitAddrsig.adoc[`emitAddrsig`] [.small]#[virtual]# | Emit a .addrsig directive starting an address‐significance table. | xref:llvm/MCStreamer/emitAddrsigSym.adoc[`emitAddrsigSym`] [.small]#[virtual]# | Add `Sym` to the address‐significance table. | xref:llvm/MCStreamer/emitAssignment.adoc[`emitAssignment`] [.small]#[virtual]# | Emit an assignment of `Value` to `Symbol.` | xref:llvm/MCStreamer/emitBinaryData.adoc[`emitBinaryData`] [.small]#[virtual]# | Functionally identical to EmitBytes. When emitting textual assembly, this method uses .byte directives instead of .ascii or .asciz for readability. | xref:llvm/MCStreamer/emitBuildVersion.adoc[`emitBuildVersion`] [.small]#[virtual]# | Emit/Specify Mach‐O build version command. `Platform` should be one of MachO::PlatformType. | xref:llvm/MCStreamer/emitBundleAlignMode.adoc[`emitBundleAlignMode`] [.small]#[virtual]# | Enable aligned instruction bundling with the given bundle size. | xref:llvm/MCStreamer/emitBundleLock.adoc[`emitBundleLock`] [.small]#[virtual]# | The following instructions are a bundle‐locked group. | xref:llvm/MCStreamer/emitBundleUnlock.adoc[`emitBundleUnlock`] [.small]#[virtual]# | Ends a bundle‐locked group. | xref:llvm/MCStreamer/emitBytes.adoc[`emitBytes`] [.small]#[virtual]# | Emit the bytes in `Data` into the output. | xref:llvm/MCStreamer/emitCFIAdjustCfaOffset.adoc[`emitCFIAdjustCfaOffset`] [.small]#[virtual]# | Emit a .cfi_adjust_cfa_offset directive. | xref:llvm/MCStreamer/emitCFIBKeyFrame.adoc[`emitCFIBKeyFrame`] [.small]#[virtual]# | Emit a .cfi_b_key_frame directive. | xref:llvm/MCStreamer/emitCFIDefCfa.adoc[`emitCFIDefCfa`] [.small]#[virtual]# | Emit a .cfi_def_cfa directive. | xref:llvm/MCStreamer/emitCFIDefCfaOffset.adoc[`emitCFIDefCfaOffset`] [.small]#[virtual]# | Emit a .cfi_def_cfa_offset directive. | xref:llvm/MCStreamer/emitCFIDefCfaRegister.adoc[`emitCFIDefCfaRegister`] [.small]#[virtual]# | Emit a .cfi_def_cfa_register directive. | xref:llvm/MCStreamer/emitCFIEndProc.adoc[`emitCFIEndProc`] | Emit a .cfi_endproc directive. | xref:llvm/MCStreamer/emitCFIEscape.adoc[`emitCFIEscape`] [.small]#[virtual]# | Emit a .cfi_escape directive with raw DWARF CFI bytes. | xref:llvm/MCStreamer/emitCFIGnuArgsSize.adoc[`emitCFIGnuArgsSize`] [.small]#[virtual]# | Emit a .cfi_gnu_args_size directive. | xref:llvm/MCStreamer/emitCFILLVMDefAspaceCfa.adoc[`emitCFILLVMDefAspaceCfa`] [.small]#[virtual]# | Emit a .cfi_llvm_def_aspace_cfa directive. | xref:llvm/MCStreamer/emitCFILLVMRegisterPair.adoc[`emitCFILLVMRegisterPair`] [.small]#[virtual]# | Emit a .cfi_llvm_register_pair directive. | xref:llvm/MCStreamer/emitCFILLVMSetRAState-01.adoc[`emitCFILLVMSetRAState`] | `emitCFILLVMSetRAState` overloads | xref:llvm/MCStreamer/emitCFILLVMVectorOffset.adoc[`emitCFILLVMVectorOffset`] [.small]#[virtual]# | Emit a .cfi_llvm_vector_offset directive. | xref:llvm/MCStreamer/emitCFILLVMVectorRegisterMask.adoc[`emitCFILLVMVectorRegisterMask`] [.small]#[virtual]# | Emit a .cfi_llvm_vector_register_mask directive. | xref:llvm/MCStreamer/emitCFILLVMVectorRegisters.adoc[`emitCFILLVMVectorRegisters`] [.small]#[virtual]# | Emit a .cfi_llvm_vector_registers directive. | xref:llvm/MCStreamer/emitCFILabel.adoc[`emitCFILabel`] [.small]#[virtual]# | When emitting an object file, create and emit a real label. When emitting textual assembly, this should do nothing to avoid polluting our output. | xref:llvm/MCStreamer/emitCFILabelDirective.adoc[`emitCFILabelDirective`] [.small]#[virtual]# | Emit a .cfi_label directive. | xref:llvm/MCStreamer/emitCFILsda.adoc[`emitCFILsda`] [.small]#[virtual]# | Emit a .cfi_lsda directive. | xref:llvm/MCStreamer/emitCFIMTETaggedFrame.adoc[`emitCFIMTETaggedFrame`] [.small]#[virtual]# | Emit a .cfi_mte_tagged_frame directive. | xref:llvm/MCStreamer/emitCFINegateRAState.adoc[`emitCFINegateRAState`] [.small]#[virtual]# | Emit a .cfi_negate_ra_state directive. | xref:llvm/MCStreamer/emitCFINegateRAStateWithPC.adoc[`emitCFINegateRAStateWithPC`] [.small]#[virtual]# | Emit a .cfi_negate_ra_state_with_pc directive. | xref:llvm/MCStreamer/emitCFIOffset.adoc[`emitCFIOffset`] [.small]#[virtual]# | Emit a .cfi_offset directive. | xref:llvm/MCStreamer/emitCFIPersonality.adoc[`emitCFIPersonality`] [.small]#[virtual]# | Emit a .cfi_personality directive. | xref:llvm/MCStreamer/emitCFIRegister.adoc[`emitCFIRegister`] [.small]#[virtual]# | Emit a .cfi_register directive. | xref:llvm/MCStreamer/emitCFIRelOffset.adoc[`emitCFIRelOffset`] [.small]#[virtual]# | Emit a .cfi_rel_offset directive. | xref:llvm/MCStreamer/emitCFIRememberState.adoc[`emitCFIRememberState`] [.small]#[virtual]# | Emit a .cfi_remember_state directive. | xref:llvm/MCStreamer/emitCFIRestore.adoc[`emitCFIRestore`] [.small]#[virtual]# | Emit a .cfi_restore directive. | xref:llvm/MCStreamer/emitCFIRestoreState.adoc[`emitCFIRestoreState`] [.small]#[virtual]# | Emit a .cfi_restore_state directive. | xref:llvm/MCStreamer/emitCFIReturnColumn.adoc[`emitCFIReturnColumn`] [.small]#[virtual]# | Emit a .cfi_return_column directive. | xref:llvm/MCStreamer/emitCFISameValue.adoc[`emitCFISameValue`] [.small]#[virtual]# | Emit a .cfi_same_value directive. | xref:llvm/MCStreamer/emitCFISections.adoc[`emitCFISections`] [.small]#[virtual]# | Select which CFI sections to emit. | xref:llvm/MCStreamer/emitCFISignalFrame.adoc[`emitCFISignalFrame`] [.small]#[virtual]# | Emit a .cfi_signal_frame directive. | xref:llvm/MCStreamer/emitCFIStartProc.adoc[`emitCFIStartProc`] | Emit a .cfi_startproc directive. | xref:llvm/MCStreamer/emitCFIUndefined.adoc[`emitCFIUndefined`] [.small]#[virtual]# | Emit a .cfi_undefined directive. | xref:llvm/MCStreamer/emitCFIValOffset.adoc[`emitCFIValOffset`] [.small]#[virtual]# | Emit a .cfi_val_offset directive. | xref:llvm/MCStreamer/emitCFIWindowSave.adoc[`emitCFIWindowSave`] [.small]#[virtual]# | Emit a .cfi_window_save directive. | xref:llvm/MCStreamer/emitCGProfileEntry.adoc[`emitCGProfileEntry`] [.small]#[virtual]# | Emit a call‐graph profile edge. | xref:llvm/MCStreamer/emitCOFFImgRel32.adoc[`emitCOFFImgRel32`] [.small]#[virtual]# | Emits a COFF image relative relocation. | xref:llvm/MCStreamer/emitCOFFSafeSEH.adoc[`emitCOFFSafeSEH`] [.small]#[virtual]# | Emit a COFF .safeseh directive for `Symbol.` | xref:llvm/MCStreamer/emitCOFFSecNumber.adoc[`emitCOFFSecNumber`] [.small]#[virtual]# | Emits the physical number of the section containing the given symbol as assigned during object writing (i.e., this is not a runtime relocation). | xref:llvm/MCStreamer/emitCOFFSecOffset.adoc[`emitCOFFSecOffset`] [.small]#[virtual]# | Emits the offset of the symbol from the beginning of the section during object writing (i.e., this is not a runtime relocation). | xref:llvm/MCStreamer/emitCOFFSecRel32.adoc[`emitCOFFSecRel32`] [.small]#[virtual]# | Emits a COFF section relative relocation. | xref:llvm/MCStreamer/emitCOFFSectionIndex.adoc[`emitCOFFSectionIndex`] [.small]#[virtual]# | Emits a COFF section index. | xref:llvm/MCStreamer/emitCOFFSymbolIndex.adoc[`emitCOFFSymbolIndex`] [.small]#[virtual]# | Emits the symbol table index of a Symbol into the current section. | xref:llvm/MCStreamer/emitCOFFSymbolStorageClass.adoc[`emitCOFFSymbolStorageClass`] [.small]#[virtual]# | Emit the storage class of the symbol. | xref:llvm/MCStreamer/emitCOFFSymbolType.adoc[`emitCOFFSymbolType`] [.small]#[virtual]# | Emit the type of the symbol. | xref:llvm/MCStreamer/emitCVDefRangeDirective-0d.adoc[`emitCVDefRangeDirective`] | `emitCVDefRangeDirective` overloads | xref:llvm/MCStreamer/emitCVFPOData.adoc[`emitCVFPOData`] [.small]#[virtual]# | This implements the CodeView '.cv_fpo_data' assembler directive. | xref:llvm/MCStreamer/emitCVFileChecksumOffsetDirective.adoc[`emitCVFileChecksumOffsetDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_filechecksumoffset' assembler directive. | xref:llvm/MCStreamer/emitCVFileChecksumsDirective.adoc[`emitCVFileChecksumsDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_filechecksums' assembler directive. | xref:llvm/MCStreamer/emitCVFileDirective.adoc[`emitCVFileDirective`] [.small]#[virtual]# | Associate a filename and checksum with a CodeView logical file number. | xref:llvm/MCStreamer/emitCVFuncIdDirective.adoc[`emitCVFuncIdDirective`] [.small]#[virtual]# | Introduces a function id for use with .cv_loc. | xref:llvm/MCStreamer/emitCVInlineLinetableDirective.adoc[`emitCVInlineLinetableDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_inline_linetable' assembler directive. | xref:llvm/MCStreamer/emitCVInlineSiteIdDirective.adoc[`emitCVInlineSiteIdDirective`] [.small]#[virtual]# | Introduces an inline call site id for use with .cv_loc. Includes extra information for inline line table generation. | xref:llvm/MCStreamer/emitCVLinetableDirective.adoc[`emitCVLinetableDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_linetable' assembler directive. | xref:llvm/MCStreamer/emitCVLocDirective.adoc[`emitCVLocDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_loc' assembler directive. | xref:llvm/MCStreamer/emitCVStringTableDirective.adoc[`emitCVStringTableDirective`] [.small]#[virtual]# | This implements the CodeView '.cv_stringtable' assembler directive. | xref:llvm/MCStreamer/emitCodeAlignment.adoc[`emitCodeAlignment`] [.small]#[virtual]# | Emit nops until the byte alignment `ByteAlignment` is reached. | xref:llvm/MCStreamer/emitCommonSymbol.adoc[`emitCommonSymbol`] [.small]#[virtual]# | Emit a common symbol. | xref:llvm/MCStreamer/emitConditionalAssignment.adoc[`emitConditionalAssignment`] [.small]#[virtual]# | Emit an assignment of `Value` to `Symbol,` but only if `Value` is also emitted. | xref:llvm/MCStreamer/emitDarwinTargetVariantBuildVersion.adoc[`emitDarwinTargetVariantBuildVersion`] [.small]#[virtual]# | Emit a Mach‐O build‐version command for the Darwin target variant. | xref:llvm/MCStreamer/emitDataRegion.adoc[`emitDataRegion`] [.small]#[virtual]# | Note in the output the specified region `Kind.` | xref:llvm/MCStreamer/emitDwarfAdvanceLineAddr.adoc[`emitDwarfAdvanceLineAddr`] [.small]#[virtual]# | Emit a raw DWARF line‐address advance from `LastLabel` to `Label.` | xref:llvm/MCStreamer/emitDwarfFile0Directive.adoc[`emitDwarfFile0Directive`] [.small]#[virtual]# | Specify the "root" file of the compilation, using the ".file 0" extension. | xref:llvm/MCStreamer/emitDwarfFileDirective.adoc[`emitDwarfFileDirective`] | Associate a filename with a specified logical file number. This implements the DWARF2 '.file 4 "foo.c"' assembler directive. | xref:llvm/MCStreamer/emitDwarfLineEndEntry.adoc[`emitDwarfLineEndEntry`] [.small]#[virtual]# | Emit the debug line end entry. | xref:llvm/MCStreamer/emitDwarfLineStartLabel.adoc[`emitDwarfLineStartLabel`] [.small]#[virtual]# | Emit the debug line start label. | xref:llvm/MCStreamer/emitDwarfLocDirective.adoc[`emitDwarfLocDirective`] [.small]#[virtual]# | This implements the DWARF2 '.loc fileno lineno ...' assembler directive. | xref:llvm/MCStreamer/emitDwarfLocDirectiveWithInlinedAt.adoc[`emitDwarfLocDirectiveWithInlinedAt`] [.small]#[virtual]# | This is same as emitDwarfLocDirective, except it has the capability to add inlined_at information. | xref:llvm/MCStreamer/emitDwarfLocLabelDirective.adoc[`emitDwarfLocLabelDirective`] [.small]#[virtual]# | This implements the '.loc_label Name' directive. | xref:llvm/MCStreamer/emitDwarfUnitLength-08.adoc[`emitDwarfUnitLength`] | `emitDwarfUnitLength` overloads | xref:llvm/MCStreamer/emitEHSymAttributes.adoc[`emitEHSymAttributes`] [.small]#[virtual]# | Copy EH‐related symbol attributes from `Symbol` to `EHSymbol.` | xref:llvm/MCStreamer/emitELFSize.adoc[`emitELFSize`] [.small]#[virtual]# | Emit an ELF .size directive. | xref:llvm/MCStreamer/emitELFSymverDirective.adoc[`emitELFSymverDirective`] [.small]#[virtual]# | Emit an ELF .symver directive. | xref:llvm/MCStreamer/emitExplicitComments.adoc[`emitExplicitComments`] [.small]#[virtual]# | Emit added explicit comments. | xref:llvm/MCStreamer/emitFileDirective-04.adoc[`emitFileDirective`] | `emitFileDirective` overloads | xref:llvm/MCStreamer/emitFill-0a.adoc[`emitFill`] | `emitFill` overloads | xref:llvm/MCStreamer/emitGNUAttribute.adoc[`emitGNUAttribute`] [.small]#[virtual]# | Emit a .gnu_attribute directive. | xref:llvm/MCStreamer/emitIdent.adoc[`emitIdent`] [.small]#[virtual]# | Emit the "identifiers" directive. This implements the '.ident "version foo"' assembler directive. | xref:llvm/MCStreamer/emitInstruction.adoc[`emitInstruction`] [.small]#[virtual]# | Emit the given `Instruction` into the current section. | xref:llvm/MCStreamer/emitInt16.adoc[`emitInt16`] | Emit `Value` as a two‐byte integer. | xref:llvm/MCStreamer/emitInt32.adoc[`emitInt32`] | Emit `Value` as a four‐byte integer. | xref:llvm/MCStreamer/emitInt64.adoc[`emitInt64`] | Emit `Value` as an eight‐byte integer. | xref:llvm/MCStreamer/emitInt8.adoc[`emitInt8`] | Emit `Value` as a one‐byte integer. | xref:llvm/MCStreamer/emitIntValue-00.adoc[`emitIntValue`] | `emitIntValue` overloads | xref:llvm/MCStreamer/emitIntValueInHex.adoc[`emitIntValueInHex`] [.small]#[virtual]# | Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes. | xref:llvm/MCStreamer/emitIntValueInHexWithPadding.adoc[`emitIntValueInHexWithPadding`] [.small]#[virtual]# | Emit a constant integer in hex, padded to `Size` bytes. | xref:llvm/MCStreamer/emitLOHDirective.adoc[`emitLOHDirective`] [.small]#[virtual]# | Emit a Linker Optimization Hint (LOH) directive. | xref:llvm/MCStreamer/emitLabel.adoc[`emitLabel`] [.small]#[virtual]# | Emit a label for `Symbol` into the current section. | xref:llvm/MCStreamer/emitLineTableLabel.adoc[`emitLineTableLabel`] | Emit a temporary label and record it in the DWARF line table. | xref:llvm/MCStreamer/emitLinkerOptions.adoc[`emitLinkerOptions`] [.small]#[virtual]# | Emit the given list `Options` of strings as linker options into the output. | xref:llvm/MCStreamer/emitLocalCommonSymbol.adoc[`emitLocalCommonSymbol`] [.small]#[virtual]# | Emit a local common (.lcomm) symbol. | xref:llvm/MCStreamer/emitNops.adoc[`emitNops`] [.small]#[virtual]# | Emit `NumBytes` bytes of NOP instructions. | xref:llvm/MCStreamer/emitPrefAlign.adoc[`emitPrefAlign`] [.small]#[virtual]# | Align up to `A` using NOPs or fill, not past symbol `End.` | xref:llvm/MCStreamer/emitPseudoProbe.adoc[`emitPseudoProbe`] [.small]#[virtual]# | Emit the a pseudo probe into the current section. | xref:llvm/MCStreamer/emitRawComment.adoc[`emitRawComment`] [.small]#[virtual]# | Print `T` immediately as a comment, optionally tab‐prefixed. | xref:llvm/MCStreamer/emitRawText.adoc[`emitRawText`] | Dump `String` into the output assembly file. | xref:llvm/MCStreamer/emitRelocDirective.adoc[`emitRelocDirective`] [.small]#[virtual]# | Record a relocation described by the .reloc directive. | xref:llvm/MCStreamer/emitSLEB128IntValue.adoc[`emitSLEB128IntValue`] | Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers. | xref:llvm/MCStreamer/emitSLEB128Value.adoc[`emitSLEB128Value`] [.small]#[virtual]# | Emit `Value` encoded as signed LEB128. | xref:llvm/MCStreamer/emitSubsectionsViaSymbols.adoc[`emitSubsectionsViaSymbols`] [.small]#[virtual]# | Emit a .subsection_via_symbols directive. | xref:llvm/MCStreamer/emitSymbolAttribute.adoc[`emitSymbolAttribute`] [.small]#[virtual]# | Add the given `Attribute` to `Symbol.` | xref:llvm/MCStreamer/emitSymbolDesc.adoc[`emitSymbolDesc`] [.small]#[virtual]# | Set the `DescValue` for the `Symbol.` | xref:llvm/MCStreamer/emitSymbolValue.adoc[`emitSymbolValue`] | Special case of EmitValue that avoids the client having to pass in a MCExpr for MCSymbols. | xref:llvm/MCStreamer/emitSyntaxDirective.adoc[`emitSyntaxDirective`] [.small]#[virtual]# | Emit a `.{Syntax}_syntax` directive, such as `.intel_syntax`. | xref:llvm/MCStreamer/emitTBSSSymbol.adoc[`emitTBSSSymbol`] [.small]#[virtual]# | Emit a thread local bss (.tbss) symbol. | xref:llvm/MCStreamer/emitTargetTriple.adoc[`emitTargetTriple`] [.small]#[virtual]# | Emit the target triple into the output. | xref:llvm/MCStreamer/emitULEB128IntValue.adoc[`emitULEB128IntValue`] | Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers. | xref:llvm/MCStreamer/emitULEB128Value.adoc[`emitULEB128Value`] [.small]#[virtual]# | Emit `Value` encoded as unsigned LEB128. | xref:llvm/MCStreamer/emitValue.adoc[`emitValue`] | Emit the expression `Value` as a native integer of `Size` bytes. | xref:llvm/MCStreamer/emitValueImpl.adoc[`emitValueImpl`] [.small]#[virtual]# | Emit the expression `Value` into the output as a native integer of the given `Size` bytes. | xref:llvm/MCStreamer/emitValueToAlignment.adoc[`emitValueToAlignment`] [.small]#[virtual]# | Emit some number of copies of `Value` until the byte alignment `ByteAlignment` is reached. | xref:llvm/MCStreamer/emitValueToOffset.adoc[`emitValueToOffset`] [.small]#[virtual]# | Emit some number of copies of `Value` until the byte offset `Offset` is reached. | xref:llvm/MCStreamer/emitVersionForTarget.adoc[`emitVersionForTarget`] | Emit version directives appropriate for `Target.` | xref:llvm/MCStreamer/emitVersionMin.adoc[`emitVersionMin`] [.small]#[virtual]# | Specify the Mach‐O minimum deployment target version. | xref:llvm/MCStreamer/emitWeakReference.adoc[`emitWeakReference`] [.small]#[virtual]# | Emit an weak reference from `Alias` to `Symbol.` | xref:llvm/MCStreamer/emitWinCFIAllocStack.adoc[`emitWinCFIAllocStack`] [.small]#[virtual]# | Emit a .seh_stackalloc directive. | xref:llvm/MCStreamer/emitWinCFIBeginEpilogue.adoc[`emitWinCFIBeginEpilogue`] [.small]#[virtual]# | Emit a .seh_startepilogue directive. | xref:llvm/MCStreamer/emitWinCFIEndEpilogue.adoc[`emitWinCFIEndEpilogue`] [.small]#[virtual]# | Emit a .seh_endepilogue directive. | xref:llvm/MCStreamer/emitWinCFIEndProc.adoc[`emitWinCFIEndProc`] [.small]#[virtual]# | Emit a .seh_endproc directive ending a Windows CFI procedure. | xref:llvm/MCStreamer/emitWinCFIEndProlog.adoc[`emitWinCFIEndProlog`] [.small]#[virtual]# | Emit a .seh_endprologue directive. | xref:llvm/MCStreamer/emitWinCFIFuncletOrFuncEnd.adoc[`emitWinCFIFuncletOrFuncEnd`] [.small]#[virtual]# | Emit a .seh_endfunclet directive for .xdata sizing. | xref:llvm/MCStreamer/emitWinCFIPush2Regs.adoc[`emitWinCFIPush2Regs`] [.small]#[virtual]# | Emit a .seh_push2regs directive. | xref:llvm/MCStreamer/emitWinCFIPushFrame.adoc[`emitWinCFIPushFrame`] [.small]#[virtual]# | Emit a .seh_pushframe directive. | xref:llvm/MCStreamer/emitWinCFIPushReg.adoc[`emitWinCFIPushReg`] [.small]#[virtual]# | Emit a .seh_pushreg directive. | xref:llvm/MCStreamer/emitWinCFISaveReg.adoc[`emitWinCFISaveReg`] [.small]#[virtual]# | Emit a .seh_savereg directive. | xref:llvm/MCStreamer/emitWinCFISaveXMM.adoc[`emitWinCFISaveXMM`] [.small]#[virtual]# | Emit a .seh_savexmm directive. | xref:llvm/MCStreamer/emitWinCFISetFrame.adoc[`emitWinCFISetFrame`] [.small]#[virtual]# | Emit a .seh_setframe directive. | xref:llvm/MCStreamer/emitWinCFISplitChained.adoc[`emitWinCFISplitChained`] [.small]#[virtual]# | Emit a .seh_splitchained directive. | xref:llvm/MCStreamer/emitWinCFIStartProc.adoc[`emitWinCFIStartProc`] [.small]#[virtual]# | Emit a .seh_proc directive starting a Windows CFI procedure. | xref:llvm/MCStreamer/emitWinCFIUnwindV2Start.adoc[`emitWinCFIUnwindV2Start`] [.small]#[virtual]# | Emit a .seh_unwindv2start directive. | xref:llvm/MCStreamer/emitWinCFIUnwindVersion.adoc[`emitWinCFIUnwindVersion`] [.small]#[virtual]# | Emit a .seh_unwindversion directive. | xref:llvm/MCStreamer/emitWinEHHandler.adoc[`emitWinEHHandler`] [.small]#[virtual]# | Emit a .seh_handler directive. | xref:llvm/MCStreamer/emitWinEHHandlerData.adoc[`emitWinEHHandlerData`] [.small]#[virtual]# | Emit a .seh_handlerdata directive. | xref:llvm/MCStreamer/emitXCOFFCInfoSym.adoc[`emitXCOFFCInfoSym`] [.small]#[virtual]# | Emit a C_INFO symbol with XCOFF embedded metadata to the .info section. | xref:llvm/MCStreamer/emitXCOFFExceptDirective.adoc[`emitXCOFFExceptDirective`] [.small]#[virtual]# | Emit an XCOFF .except directive which adds information about a trap instruction to the object file exception section | xref:llvm/MCStreamer/emitXCOFFLocalCommonSymbol.adoc[`emitXCOFFLocalCommonSymbol`] [.small]#[virtual]# | Emits an lcomm directive with XCOFF csect information. | xref:llvm/MCStreamer/emitXCOFFRefDirective.adoc[`emitXCOFFRefDirective`] [.small]#[virtual]# | Emit a XCOFF .ref directive which creates R_REF type entry in the relocation table for one or more symbols. | xref:llvm/MCStreamer/emitXCOFFRenameDirective.adoc[`emitXCOFFRenameDirective`] [.small]#[virtual]# | Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name. | xref:llvm/MCStreamer/emitXCOFFSymbolLinkageWithVisibility.adoc[`emitXCOFFSymbolLinkageWithVisibility`] [.small]#[virtual]# | Emit a symbol's linkage and visibility with a linkage directive for XCOFF. | xref:llvm/MCStreamer/emitZerofill.adoc[`emitZerofill`] [.small]#[virtual]# | Emit the zerofill section and an optional symbol. | xref:llvm/MCStreamer/emitZeros.adoc[`emitZeros`] | Emit NumBytes worth of zeros. This function properly handles data in virtual sections. | xref:llvm/MCStreamer/endCOFFSymbolDef.adoc[`endCOFFSymbolDef`] [.small]#[virtual]# | Marks the end of the symbol definition. | xref:llvm/MCStreamer/endSection.adoc[`endSection`] | End `Section` and return its end symbol. | xref:llvm/MCStreamer/finish.adoc[`finish`] | Finish emission of machine code. | xref:llvm/MCStreamer/finishImpl.adoc[`finishImpl`] [.small]#[virtual]# | Streamer specific finalization. | xref:llvm/MCStreamer/getAllowAutoPadding.adoc[`getAllowAutoPadding`] | Return whether the assembler may insert padding automatically. | xref:llvm/MCStreamer/getAssemblerPtr.adoc[`getAssemblerPtr`] [.small]#[virtual]# | Return the assembler, or null if this streamer has none. | xref:llvm/MCStreamer/getAssociatedPDataSection.adoc[`getAssociatedPDataSection`] | Return the .pdata section associated with `TextSec.` | xref:llvm/MCStreamer/getAssociatedXDataSection.adoc[`getAssociatedXDataSection`] | Get the .xdata section used for the given section. | xref:llvm/MCStreamer/getCommentOS.adoc[`getCommentOS`] [.small]#[virtual]# | Return a raw_ostream that comments can be written to. Unlike AddComment, you are required to terminate comments with if you use this method. | xref:llvm/MCStreamer/getContext.adoc[`getContext`] | Return the MC context this streamer is bound to. | xref:llvm/MCStreamer/getCurFragSize.adoc[`getCurFragSize`] | Return the fixed size of the current data fragment. | xref:llvm/MCStreamer/getCurrentFragment.adoc[`getCurrentFragment`] | Return the fragment currently being appended to. | xref:llvm/MCStreamer/getCurrentSection.adoc[`getCurrentSection`] | Return the current section that the streamer is emitting code to. | xref:llvm/MCStreamer/getCurrentSectionOnly.adoc[`getCurrentSectionOnly`] | Return only the current section, ignoring the subsection index. | xref:llvm/MCStreamer/getCurrentWinEpilog.adoc[`getCurrentWinEpilog`] | Return the Windows EH epilog currently being processed, or null. | xref:llvm/MCStreamer/getDefaultWinCFIUnwindVersion.adoc[`getDefaultWinCFIUnwindVersion`] | Return the default unwind version for new WinCFI frames. | xref:llvm/MCStreamer/getDwarfFrameInfos.adoc[`getDwarfFrameInfos`] | Return the collected DWARF CFI frames. | xref:llvm/MCStreamer/getDwarfLineTableSymbol.adoc[`getDwarfLineTableSymbol`] [.small]#[virtual]# | Return the DWARF line‐table symbol for compile unit `CUID.` | xref:llvm/MCStreamer/getLFIRewriter.adoc[`getLFIRewriter`] | Return the installed LFI rewriter, or null if none. | xref:llvm/MCStreamer/getMnemonic.adoc[`getMnemonic`] [.small]#[virtual]# | Returns the mnemonic for `MI,` if the streamer has access to a instruction printer and returns an empty string otherwise. | xref:llvm/MCStreamer/getNumFrameInfos.adoc[`getNumFrameInfos`] | Return the number of DWARF CFI frames collected so far. | xref:llvm/MCStreamer/getNumWinFrameInfos.adoc[`getNumWinFrameInfos`] | Return the number of Windows EH frames collected so far. | xref:llvm/MCStreamer/getPreviousSection.adoc[`getPreviousSection`] | Return the previous section that the streamer is emitting code to. | xref:llvm/MCStreamer/getStartTokLoc.adoc[`getStartTokLoc`] | Return the parser's current token location, if available. | xref:llvm/MCStreamer/getTargetStreamer.adoc[`getTargetStreamer`] | Return the attached target streamer, or null if none. | xref:llvm/MCStreamer/getUseAssemblerInfoForParsing.adoc[`getUseAssemblerInfoForParsing`] | Return whether assembler info may be used during parsing. | xref:llvm/MCStreamer/getWinFrameInfos.adoc[`getWinFrameInfos`] | Return the collected Windows EH frames. | xref:llvm/MCStreamer/hasRawTextSupport.adoc[`hasRawTextSupport`] [.small]#[virtual]# | Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText. | xref:llvm/MCStreamer/hasUnfinishedDwarfFrameInfo.adoc[`hasUnfinishedDwarfFrameInfo`] | Return true if a DWARF CFI frame has been started but not ended. | xref:llvm/MCStreamer/initSections.adoc[`initSections`] [.small]#[virtual]# | Create the default sections and set the initial one. | xref:llvm/MCStreamer/isInEpilogCFI.adoc[`isInEpilogCFI`] | Return true if SEH directives are being recorded for an epilog. | xref:llvm/MCStreamer/isIntegratedAssemblerRequired.adoc[`isIntegratedAssemblerRequired`] [.small]#[virtual]# | Is the integrated assembler required for this streamer to function correctly? | xref:llvm/MCStreamer/isObj-0d.adoc[`isObj`] | Return true if this streamer emits an object file. | xref:llvm/MCStreamer/isVerboseAsm.adoc[`isVerboseAsm`] [.small]#[virtual]# | Return true if this streamer supports verbose assembly and if it is enabled. | xref:llvm/MCStreamer/isWinCFIPrologEnded.adoc[`isWinCFIPrologEnded`] | Returns true if a WinCFI prolog has been completed (.seh_endprologue) in the current frame. | xref:llvm/MCStreamer/mayHaveInstructions.adoc[`mayHaveInstructions`] [.small]#[virtual]# | Return true if `Sec` may contain instructions. | xref:llvm/MCStreamer/maybeEmitDwarf64Mark.adoc[`maybeEmitDwarf64Mark`] | Emit a special value of 0xffffffff if producing 64‐bit debugging info. | xref:llvm/MCStreamer/popSection.adoc[`popSection`] [.small]#[virtual]# | Restore the current and previous section from the section stack. Calls changeSection as needed. | xref:llvm/MCStreamer/pushSection.adoc[`pushSection`] | Save the current and previous section on the section stack. | xref:llvm/MCStreamer/reset.adoc[`reset`] [.small]#[virtual]# | State management | xref:llvm/MCStreamer/setAllowAutoPadding.adoc[`setAllowAutoPadding`] | Set whether the assembler may insert padding automatically. | xref:llvm/MCStreamer/setDefaultWinCFIUnwindVersion.adoc[`setDefaultWinCFIUnwindVersion`] | Set the default unwind version for new WinCFI frames. | xref:llvm/MCStreamer/setLFIRewriter.adoc[`setLFIRewriter`] | Take ownership of LFI rewriter `Rewriter.` | xref:llvm/MCStreamer/setStartTokLocPtr.adoc[`setStartTokLocPtr`] | Point at the parser's current token location for diagnostics. | xref:llvm/MCStreamer/setTargetStreamer.adoc[`setTargetStreamer`] | Take ownership of target streamer `TS.` | xref:llvm/MCStreamer/setUseAssemblerInfoForParsing.adoc[`setUseAssemblerInfoForParsing`] | Set whether assembler info may be used during parsing. | xref:llvm/MCStreamer/switchSection-06.adoc[`switchSection`] | `switchSection` overloads | xref:llvm/MCStreamer/switchSectionNoPrint.adoc[`switchSectionNoPrint`] | Similar to switchSection, but does not print the section directive. | xref:llvm/MCStreamer/tryEmitDwarfFileDirective.adoc[`tryEmitDwarfFileDirective`] [.small]#[virtual]# | Associate a filename with a specified logical file number. | xref:llvm/MCStreamer/visitUsedExpr.adoc[`visitUsedExpr`] | Visit symbols referenced by `Expr.` | xref:llvm/MCStreamer/visitUsedSymbol.adoc[`visitUsedSymbol`] [.small]#[virtual]# | Visit a symbol used by a streamed expression or directive. |=== == Protected Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/MCStreamer/2constructor-0d.adoc[`MCStreamer`] [.small]#[constructor]# | Construct a streamer bound to `Ctx.` | xref:llvm/MCStreamer/addFragment.adoc[`addFragment`] | Append fragment `F` to the current section. | xref:llvm/MCStreamer/changeSection.adoc[`changeSection`] [.small]#[virtual]# | This is called by popSection and switchSection, if the current section changes. | xref:llvm/MCStreamer/checkCVLocSection.adoc[`checkCVLocSection`] | Returns true if the .cv_loc directive is in the right section. | xref:llvm/MCStreamer/emitCFIEndProcImpl.adoc[`emitCFIEndProcImpl`] [.small]#[virtual]# | Target‐specific implementation of .cfi_endproc. | xref:llvm/MCStreamer/emitCFIStartProcImpl.adoc[`emitCFIStartProcImpl`] [.small]#[virtual]# | Target‐specific implementation of .cfi_startproc. | xref:llvm/MCStreamer/emitRawTextImpl.adoc[`emitRawTextImpl`] [.small]#[virtual]# | Implementation of emitRawText, used by assembly streamers. | xref:llvm/MCStreamer/emitWindowsUnwindTables-06.adoc[`emitWindowsUnwindTables`] | `emitWindowsUnwindTables` overloads | xref:llvm/MCStreamer/getCurrentWinFrameInfo.adoc[`getCurrentWinFrameInfo`] | Return the current Windows EH frame, or null if none is active. |=== == Protected Data Members [cols="1,4"] |=== | Name| Description | xref:llvm/MCStreamer/CurFrag.adoc[`CurFrag`] | Fragment currently being appended to. | xref:llvm/MCStreamer/CurrentWinEpilog.adoc[`CurrentWinEpilog`] | Symbol of the current epilog for which we are processing SEH directives. | xref:llvm/MCStreamer/DwarfFrameInfos.adoc[`DwarfFrameInfos`] | DWARF CFI frames collected while streaming. | xref:llvm/MCStreamer/IsObj-0e.adoc[`IsObj`] | True if this streamer is emitting an object file rather than assembly. | xref:llvm/MCStreamer/LFIRewriter.adoc[`LFIRewriter`] | Optional LFI rewriter applied to emitted instructions. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/createAsmStreamer.adoc[`createAsmStreamer`] | Create a machine code streamer which will print out assembly for the native target, suitable for compiling with a native assembler. | xref:llvm/createDXContainerStreamer.adoc[`createDXContainerStreamer`] | Create a DXContainer object streamer. | xref:llvm/createELFStreamer.adoc[`createELFStreamer`] | Create an ELF object streamer. | xref:llvm/createGOFFStreamer.adoc[`createGOFFStreamer`] | Create a GOFF object streamer. | xref:llvm/createMachOStreamer.adoc[`createMachOStreamer`] | Create a Mach‐O object streamer. | xref:llvm/createNullStreamer.adoc[`createNullStreamer`] | Create a no‐op streamer that discards all output. | xref:llvm/createSPIRVStreamer.adoc[`createSPIRVStreamer`] | Create a SPIR‐V object streamer. | xref:llvm/createWasmStreamer.adoc[`createWasmStreamer`] | Create a WebAssembly object streamer. | xref:llvm/emitLFIBundleAlign.adoc[`emitLFIBundleAlign`] | Emit LFI bundle‐alignment mode for the current target, if required. | xref:llvm/emitLFINoteSection.adoc[`emitLFINoteSection`] | Emit the ELF note section that identifies an LFI object file. | xref:llvm/initializeLFIMCStreamer.adoc[`initializeLFIMCStreamer`] | Initialize `Streamer` with LFI rewriting support for `TheTriple.` | xref:llvm/mcdwarf/emitListsTableHeaderStart.adoc[`mcdwarf::emitListsTableHeaderStart`] | Emit the common part of the DWARF 5 range/locations list tables header. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:llvm/CFIFunctionFrameStreamer.adoc[`CFIFunctionFrameStreamer`] | MCStreamer that cuts CFI and instructions into frames for a receiver. | xref:llvm/MCAsmBaseStreamer.adoc[`MCAsmBaseStreamer`] | Base class for streamers that emit assembly text. | xref:llvm/MCObjectStreamer.adoc[`MCObjectStreamer`] | Streaming object file generation interface. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#