|
LLVM 23.0.0git
|
Streaming machine code generation interface. More...
#include "llvm/MC/MCStreamer.h"
Public Member Functions | |
| MCStreamer (const MCStreamer &)=delete | |
| MCStreamer & | operator= (const MCStreamer &)=delete |
| virtual | ~MCStreamer () |
| void | visitUsedExpr (const MCExpr &Expr) |
| virtual void | visitUsedSymbol (const MCSymbol &Sym) |
| void | setTargetStreamer (MCTargetStreamer *TS) |
| void | setStartTokLocPtr (const SMLoc *Loc) |
| SMLoc | getStartTokLoc () const |
| void | setLFIRewriter (std::unique_ptr< MCLFIRewriter > Rewriter) |
| MCLFIRewriter * | getLFIRewriter () |
| 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 |
| 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 | emitDwarfLocDirectiveWithInlinedAt (unsigned FileNo, unsigned Line, unsigned Column, unsigned FileIA, unsigned LineIA, unsigned ColumnIA, const MCSymbol *Sym, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName, StringRef Comment={}) |
| This is same as emitDwarfLocDirective, except it has the capability to add inlined_at information. | |
| 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 | emitWinCFISplitChained (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 (StringRef Syntax, StringRef Options) |
| 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 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. | |
Assembly File Formatting. | |
| 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. | |
Symbol & Section Management | |
| 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 | emitLabel (MCSymbol *Symbol, SMLoc Loc=SMLoc()) |
Emit a label for Symbol into the current section. | |
| virtual void | emitEHSymAttributes (const MCSymbol *Symbol, MCSymbol *EHSymbol) |
| virtual void | emitSubsectionsViaSymbols () |
| Emit a .subsection_via_symbols directive. | |
| 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 | emitAssignment (MCSymbol *Symbol, const MCExpr *Value) |
Emit an assignment of Value to Symbol. | |
| virtual void | emitConditionalAssignment (MCSymbol *Symbol, const MCExpr *Value) |
Emit an assignment of Value to Symbol, but only if Value is also emitted. | |
| virtual void | emitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol) |
Emit an weak reference from Alias to Symbol. | |
| virtual bool | emitSymbolAttribute (MCSymbol *Symbol, MCSymbolAttr Attribute)=0 |
Add the given Attribute to Symbol. | |
| virtual void | emitSymbolDesc (MCSymbol *Symbol, unsigned DescValue) |
Set the DescValue for the Symbol. | |
| virtual void | beginCOFFSymbolDef (const MCSymbol *Symbol) |
| Start emitting COFF symbol definition. | |
| virtual void | emitCOFFSymbolStorageClass (int StorageClass) |
| Emit the storage class of the symbol. | |
| virtual void | emitCOFFSymbolType (int Type) |
| Emit the type of the symbol. | |
| virtual void | endCOFFSymbolDef () |
| Marks the end of the symbol definition. | |
| 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 | emitELFSymverDirective (const MCSymbol *OriginalSym, StringRef Name, bool KeepOriginalSym) |
| Emit an ELF .symver 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 | emitCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)=0 |
| Emit a common symbol. | |
| virtual void | emitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) |
| Emit a local common (.lcomm) symbol. | |
| virtual void | emitZerofill (MCSection *Section, MCSymbol *Symbol=nullptr, uint64_t Size=0, Align ByteAlignment=Align(1), SMLoc Loc=SMLoc()) |
| Emit the zerofill section and an optional symbol. | |
| virtual void | emitTBSSSymbol (MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment=Align(1)) |
| Emit a thread local bss (.tbss) symbol. | |
Generating Data | |
| 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 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 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 | emitPrefAlign (Align A) |
| virtual void | emitValueToOffset (const MCExpr *Offset, unsigned char Value, SMLoc Loc) |
Emit some number of copies of Value until the byte offset Offset is reached. | |
Protected Member Functions | |
| MCStreamer (MCContext &Ctx) | |
| virtual void | changeSection (MCSection *, uint32_t) |
| This is called by popSection and switchSection, if the current section changes. | |
| void | addFragment (MCFragment *F) |
| virtual void | emitCFIStartProcImpl (MCDwarfFrameInfo &Frame) |
| virtual void | emitCFIEndProcImpl (MCDwarfFrameInfo &CurFrame) |
| WinEH::FrameInfo * | getCurrentWinFrameInfo () |
| virtual void | emitWindowsUnwindTables (WinEH::FrameInfo *Frame) |
| virtual void | emitWindowsUnwindTables () |
| virtual void | emitRawTextImpl (StringRef String) |
| EmitRawText - If this file is backed by an assembly streamer, this dumps the specified string in the output .s file. | |
| bool | checkCVLocSection (unsigned FuncId, unsigned FileNo, SMLoc Loc) |
| Returns true if the .cv_loc directive is in the right section. | |
Protected Attributes | |
| bool | IsObj = false |
| WinEH::FrameInfo::Epilog * | CurrentWinEpilog = nullptr |
| MCFragment * | CurFrag = nullptr |
| SmallVector< MCDwarfFrameInfo, 0 > | DwarfFrameInfos |
| std::unique_ptr< MCLFIRewriter > | LFIRewriter |
Streaming machine code generation interface.
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.
Definition at line 221 of file MCStreamer.h.
|
protected |
Definition at line 92 of file MCStreamer.cpp.
Referenced by llvm::CFIFunctionFrameStreamer::CFIFunctionFrameStreamer(), llvm::MCObjectStreamer::MCObjectStreamer(), MCStreamer(), operator=(), llvm::RecordStreamer::RecordStreamer(), and llvm::SystemZHLASMAsmStreamer::SystemZHLASMAsmStreamer().
|
delete |
References MCStreamer().
|
virtualdefault |
References visitUsedExpr(), and visitUsedSymbol().
|
inlinevirtual |
Emit a blank line to a .s file to pretty it up.
Definition at line 414 of file MCStreamer.h.
Referenced by llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazyStubs(), and llvm::StackMaps::serializeToStackMapSection().
Add a textual comment.
Typically for comments that can be emitted to the generated .s file if applicable as a QoI issue to make the output of the compiler more readable. This only affects the MCAsmStreamer, and only when verbose assembly output is enabled.
If the comment includes embedded
's, they will each get the comment prefix as appropriate. The added comment should not end with a
. By default, each comment is terminated with an end of line, i.e. the EOL param is set to true by default. If one prefers not to end the comment with a new line then the EOL param should be passed with a false value.
Reimplemented in llvm::SystemZHLASMAsmStreamer.
Definition at line 393 of file MCStreamer.h.
References T.
Referenced by addConstantComments(), emitDwarfUnitLength(), emitDwarfUnitLength(), emitGenDwarfRanges(), llvm::CodeViewContext::emitLineTableForFunction(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::BTFTypeBase::emitType(), llvm::BTFTypeEnum64::emitType(), llvm::BTFTypeInt::emitType(), llvm::BTFTypeStruct::emitType(), maybeEmitDwarf64Mark(), printBroadcast(), printExtend(), printZeroExtend(), and printZeroUpperMove().
Add explicit comment T.
T is required to be a valid comment in the output and does not need to be escaped.
Definition at line 125 of file MCStreamer.cpp.
References T.
|
protected |
Definition at line 1427 of file MCStreamer.cpp.
Referenced by llvm::MCObjectStreamer::ensureHeadroom(), and llvm::MCObjectStreamer::newFragment().
Start emitting COFF symbol definition.
| Symbol | - The symbol to have its External & Type fields set. |
Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.
Definition at line 1271 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
This is called by popSection and switchSection, if the current section changes.
Reimplemented in llvm::MCELFStreamer, llvm::MCGOFFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, llvm::MCXCOFFStreamer, llvm::RISCVELFStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1332 of file MCStreamer.cpp.
References CurFrag, emitLabel(), llvm::MCSection::getBeginSymbol(), getContext(), llvm::MCSection::getDummyFragment(), and llvm::MCContext::IsMachO.
Referenced by llvm::SystemZHLASMAsmStreamer::changeSection(), popSection(), switchSection(), and switchSectionNoPrint().
Returns true if the .cv_loc directive is in the right section.
Definition at line 303 of file MCStreamer.cpp.
References getContext(), getCurrentSectionOnly(), llvm::MCContext::getCVContext(), llvm::CodeViewContext::getCVFunctionInfo(), llvm::MCContext::reportError(), and llvm::MCCVFunctionInfo::Section.
Referenced by llvm::MCObjectStreamer::emitCVLocDirective().
|
virtual |
Emit the absolute difference between two symbols.
Hi is greater than the offset Lo. Reimplemented in llvm::MCObjectStreamer.
Definition at line 1237 of file MCStreamer.cpp.
References llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createSub(), llvm::MCAsmInfo::doesSetDirectiveSuppressReloc(), emitAssignment(), emitSymbolValue(), emitValue(), llvm::Hi, llvm::Lo, and Size.
Referenced by llvm::MCDwarfLineTableHeader::Emit(), llvm::MCObjectStreamer::emitAbsoluteSymbolDiff(), emitDwarfUnitLength(), and llvm::mcdwarf::emitListsTableHeaderStart().
|
virtual |
Emit the absolute difference between two symbols encoded with ULEB128.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1256 of file MCStreamer.cpp.
References llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createSub(), emitULEB128Value(), llvm::Hi, and llvm::Lo.
Referenced by llvm::MCObjectStreamer::emitAbsoluteSymbolDiffAsULEB128().
|
inlinevirtual |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1079 of file MCStreamer.h.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1080 of file MCStreamer.h.
Emit an assignment of Value to 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.
| Symbol | - The symbol being assigned to. |
| Value | - The value for the symbol. |
Reimplemented in llvm::MCObjectStreamer, and llvm::RecordStreamer.
Definition at line 1161 of file MCStreamer.cpp.
References llvm::MCTargetStreamer::emitAssignment(), getTargetStreamer(), and visitUsedExpr().
Referenced by emitAbsoluteSymbolDiff(), llvm::MCObjectStreamer::emitAssignment(), llvm::RecordStreamer::emitAssignment(), llvm::RecordStreamer::flushSymverDirectives(), forceExpAbs(), and llvm::MCContext::setSymbolValue().
|
virtual |
Functionally identical to EmitBytes.
When emitting textual assembly, this method uses .byte directives instead of .ascii or .asciz for readability.
Definition at line 1347 of file MCStreamer.cpp.
References llvm::Data, and emitBytes().
Referenced by llvm::AsmPrinter::XRayFunctionEntry::emit(), emitCommonSymbol(), emitOneV5FileEntry(), and llvm::MCDwarfLineStr::emitSection().
|
inlinevirtual |
Emit/Specify Mach-O build version command.
Platform should be one of MachO::PlatformType.
Definition at line 510 of file MCStreamer.h.
Referenced by emitVersionForTarget().
|
virtual |
Emit the bytes in Data into the output.
This is used to implement assembler directives such as .byte, .ascii, etc.
Reimplemented in llvm::CSKYELFStreamer, llvm::MCObjectStreamer, llvm::RISCVELFStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1346 of file MCStreamer.cpp.
References llvm::Data.
Referenced by addAllTypesFromDWP(), addAllTypesFromTypesSection(), llvm::MCDwarfLineAddr::Emit(), emitBinaryData(), emitCommonSymbol(), EmitGenDwarfInfo(), llvm::AArch64TargetStreamer::emitInst(), llvm::ARMTargetStreamer::emitInst(), emitIntValue(), emitIntValue(), llvm::AMDGPU::AMDGPUMCKernelCodeT::EmitKernelCodeT(), llvm::TargetLoweringObjectFileCOFF::emitLinkerDirectives(), llvm::TargetLoweringObjectFileELF::emitLinkerDirectives(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), emitNop(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), emitNullTerminatedSymbolName(), emitOneV5FileEntry(), llvm::TargetLoweringObjectFile::emitPseudoProbeDescMetadata(), emitSLEB128IntValue(), emitULEB128IntValue(), llvm::handleSection(), llvm::initializeLFIMCStreamer(), llvm::write(), and llvm::writeStringsAndOffsets().
|
virtual |
Definition at line 503 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createAdjustCfaOffset(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 221 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::IsBKeyFrame.
|
virtual |
Definition at line 482 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::cfiDefCfa(), llvm::MCDwarfFrameInfo::CurrentCfaRegister, emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
|
virtual |
Definition at line 493 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::cfiDefCfaOffset(), emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
|
virtual |
Definition at line 513 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createDefCfaRegister(), llvm::MCDwarfFrameInfo::CurrentCfaRegister, emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
| void MCStreamer::emitCFIEndProc | ( | ) |
Definition at line 448 of file MCStreamer.cpp.
References emitCFIEndProcImpl().
|
protectedvirtual |
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::MipsELFStreamer.
Definition at line 456 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::End.
Referenced by emitCFIEndProc(), and llvm::CFIFunctionFrameStreamer::emitCFIEndProcImpl().
Definition at line 614 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createEscape(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 624 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createGnuArgsSize(), emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and Size.
|
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.
Reimplemented in llvm::MCObjectStreamer, and llvm::MipsELFStreamer.
Definition at line 476 of file MCStreamer.cpp.
Referenced by emitCFIAdjustCfaOffset(), emitCFIDefCfa(), emitCFIDefCfaOffset(), emitCFIDefCfaRegister(), emitCFIEscape(), emitCFIGnuArgsSize(), emitCFILabelDirective(), emitCFILLVMDefAspaceCfa(), emitCFINegateRAState(), emitCFINegateRAStateWithPC(), emitCFIOffset(), emitCFIRegister(), emitCFIRelOffset(), emitCFIRememberState(), emitCFIRestore(), emitCFIRestoreState(), emitCFISameValue(), emitCFIUndefined(), emitCFIValOffset(), emitCFIWindowSave(), llvm::Win64EH::ARM64UnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::ARMUnwindEmitter::EmitUnwindInfo(), emitWinCFIAllocStack(), emitWinCFIBeginEpilogue(), emitWinCFIEndEpilogue(), emitWinCFIEndProc(), emitWinCFIEndProlog(), emitWinCFIFuncletOrFuncEnd(), emitWinCFIPushFrame(), emitWinCFIPushReg(), emitWinCFISaveReg(), emitWinCFISaveXMM(), emitWinCFISetFrame(), emitWinCFISplitChained(), emitWinCFIStartProc(), and emitWinCFIUnwindV2Start().
Definition at line 698 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createLabel(), emitCFILabel(), F, getContext(), and llvm::MCContext::getOrCreateSymbol().
|
virtual |
Definition at line 524 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createLLVMDefAspaceCfa(), llvm::MCDwarfFrameInfo::CurrentCfaRegister, emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
Definition at line 565 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::Lsda, and llvm::MCDwarfFrameInfo::LsdaEncoding.
|
virtual |
Definition at line 228 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::IsMTETaggedFrame.
|
virtual |
Definition at line 671 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createNegateRAState(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 681 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createNegateRAStateWithPC(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 536 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createOffset(), emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
Definition at line 556 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::Personality, and llvm::MCDwarfFrameInfo::PersonalityEncoding.
|
virtual |
Definition at line 651 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createRegister(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 546 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createRelOffset(), emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
|
virtual |
Definition at line 573 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createRememberState(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 604 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createRestore(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 583 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createRestoreState(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 691 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::RAReg.
|
virtual |
Definition at line 594 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createSameValue(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 418 of file MCStreamer.cpp.
References llvm::Debug.
Referenced by llvm::MCObjectStreamer::emitCFISections().
|
virtual |
Definition at line 634 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::IsSignalFrame.
Definition at line 420 of file MCStreamer.cpp.
References llvm::MCDwarfFrameInfo::CurrentCfaRegister, DwarfFrameInfos, emitCFIStartProcImpl(), getContext(), getCurrentSectionOnly(), llvm::MCAsmInfo::getInitialFrameState(), llvm::MCDwarfFrameInfo::IsSimple, llvm::MCCFIInstruction::OpDefCfa, llvm::MCCFIInstruction::OpDefCfaRegister, llvm::MCCFIInstruction::OpLLVMDefAspaceCfa, and llvm::MCContext::reportError().
|
protectedvirtual |
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::MipsELFStreamer.
Definition at line 445 of file MCStreamer.cpp.
Referenced by emitCFIStartProc(), and llvm::CFIFunctionFrameStreamer::emitCFIStartProcImpl().
|
virtual |
Definition at line 641 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createUndefined(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Definition at line 705 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createValOffset(), emitCFILabel(), llvm::MCDwarfFrameInfo::Instructions, and llvm::Offset.
|
virtual |
Definition at line 662 of file MCStreamer.cpp.
References llvm::MCCFIInstruction::createWindowSave(), emitCFILabel(), and llvm::MCDwarfFrameInfo::Instructions.
|
virtual |
Reimplemented in llvm::MCELFStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 839 of file MCStreamer.cpp.
References llvm::Count.
Referenced by llvm::TargetLoweringObjectFile::emitCGProfileMetadata(), and llvm::MCAsmParserExtension::parseDirectiveCGProfile().
|
virtual |
Emit nops until the byte alignment 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.
| Alignment | - The alignment to reach. |
| STI | - The MCSubtargetInfo in operation when padding is emitted. |
| MaxBytesToEmit | - The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted. |
Reimplemented in llvm::MCObjectStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1358 of file MCStreamer.cpp.
Referenced by llvm::CSKYConstantPool::emitAll(), and smallData().
Emits a COFF image relative relocation.
| Symbol | - Symbol the image relative relocation should point to. |
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1085 of file MCStreamer.cpp.
References llvm::Offset.
Referenced by emitSymbolAttribute().
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1077 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
Emits the physical number of the section containing the given symbol as assigned during object writing (i.e., this is not a runtime relocation).
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1087 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
Emits the offset of the symbol from the beginning of the section during object writing (i.e., this is not a runtime relocation).
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1089 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
Emits a COFF section relative relocation.
| Symbol | - Symbol the section relative relocation should point to. |
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1083 of file MCStreamer.cpp.
References llvm::Offset.
Referenced by llvm::CodeViewContext::emitLineTableForFunction(), llvm::MCDwarfLineStr::emitRef(), emitSymbolAttribute(), and emitSymbolValue().
Emits a COFF section index.
| Symbol | - Symbol the section number relocation should point to. |
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1081 of file MCStreamer.cpp.
Referenced by llvm::CodeViewContext::emitLineTableForFunction(), and emitSymbolAttribute().
Emits the symbol table index of a Symbol into the current section.
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1079 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
|
virtual |
Emit the storage class of the symbol.
| StorageClass | - The storage class the symbol should have. |
Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.
Definition at line 1282 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
|
virtual |
Emit the type of the symbol.
Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.
Definition at line 1285 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
|
pure virtual |
Emit a common symbol.
| Symbol | - The common symbol to emit. |
| Size | - The size of the common symbol. |
| ByteAlignment | - The alignment of the symbol. |
Implemented in llvm::CFIFunctionFrameStreamer, llvm::MCDXContainerStreamer, llvm::MCELFStreamer, llvm::MCGOFFStreamer, llvm::MCSPIRVStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, llvm::MCXCOFFStreamer, llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.
References llvm::Data, emitBinaryData(), emitBytes(), emitIntValue(), emitLocalCommonSymbol(), emitTBSSSymbol(), emitValue(), emitValueImpl(), emitZerofill(), and Size.
Emit an assignment of Value to Symbol, but only if Value is also emitted.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 415 of file MCStreamer.cpp.
|
virtual |
Definition at line 376 of file MCStreamer.cpp.
References copyBytesForDefRange(), and emitCVDefRangeDirective().
|
virtual |
Definition at line 368 of file MCStreamer.cpp.
References copyBytesForDefRange(), and emitCVDefRangeDirective().
|
virtual |
Definition at line 351 of file MCStreamer.cpp.
References copyBytesForDefRange(), and emitCVDefRangeDirective().
|
virtual |
Definition at line 359 of file MCStreamer.cpp.
References copyBytesForDefRange(), and emitCVDefRangeDirective().
|
virtual |
This implements the CodeView '.cv_def_range' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 347 of file MCStreamer.cpp.
Referenced by llvm::MCObjectStreamer::emitCVDefRangeDirective(), emitCVDefRangeDirective(), emitCVDefRangeDirective(), emitCVDefRangeDirective(), and emitCVDefRangeDirective().
|
inlinevirtual |
This implements the CodeView '.cv_filechecksumoffset' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 989 of file MCStreamer.h.
|
inlinevirtual |
This implements the CodeView '.cv_filechecksums' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 985 of file MCStreamer.h.
|
virtual |
Associate a filename with a specified logical file number, and also specify that file's checksum information.
This implements the '.cv_file 4 "foo.c"' assembler directive. Returns true on success.
Definition at line 273 of file MCStreamer.cpp.
References llvm::CodeViewContext::addFile(), Filename, getContext(), and llvm::MCContext::getCVContext().
|
inlinevirtual |
This implements the CodeView '.cv_fpo_data' assembler directive.
Definition at line 992 of file MCStreamer.h.
Introduces a function id for use with .cv_loc.
Definition at line 280 of file MCStreamer.cpp.
References getContext(), llvm::MCContext::getCVContext(), and llvm::CodeViewContext::recordFunctionId().
|
virtual |
This implements the CodeView '.cv_inline_linetable' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 329 of file MCStreamer.cpp.
Referenced by llvm::MCObjectStreamer::emitCVInlineLinetableDirective().
|
virtual |
Introduces an inline call site id for use with .cv_loc.
Includes extra information for inline line table generation.
Definition at line 284 of file MCStreamer.cpp.
References getContext(), llvm::MCContext::getCVContext(), llvm::CodeViewContext::recordInlinedCallSiteId(), and llvm::MCContext::reportError().
|
virtual |
This implements the CodeView '.cv_linetable' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 325 of file MCStreamer.cpp.
Referenced by llvm::MCObjectStreamer::emitCVLinetableDirective().
|
virtual |
This implements the CodeView '.cv_loc' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 298 of file MCStreamer.cpp.
|
inlinevirtual |
This implements the CodeView '.cv_stringtable' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 982 of file MCStreamer.h.
|
inlinevirtual |
Definition at line 514 of file MCStreamer.h.
Referenced by emitVersionForTarget().
|
inlinevirtual |
Note in the output the specified region Kind.
Definition at line 501 of file MCStreamer.h.
Referenced by llvm::CSKYConstantPool::emitAll(), and llvm::ConstantPool::emitEntries().
|
inlinevirtual |
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.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1126 of file MCStreamer.h.
Referenced by llvm::MCDwarfLineTable::emitOne().
|
virtual |
Specify the "root" file of the compilation, using the ".file 0" extension.
Definition at line 212 of file MCStreamer.cpp.
References Filename, getContext(), and llvm::MCContext::setMCLineTableRootFile().
|
inline |
Associate a filename with a specified logical file number.
This implements the DWARF2 '.file 4 "foo.c"' assembler directive.
Definition at line 877 of file MCStreamer.h.
References llvm::cantFail(), Filename, and tryEmitDwarfFileDirective().
|
inlinevirtual |
Emit the debug line end entry.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1120 of file MCStreamer.h.
Referenced by llvm::MCDwarfLineTable::emitOne().
|
virtual |
Emit the debug line start label.
Definition at line 1156 of file MCStreamer.cpp.
References emitLabel().
Referenced by llvm::MCDwarfLineTableHeader::Emit().
|
virtual |
This implements the DWARF2 '.loc fileno lineno ...' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 235 of file MCStreamer.cpp.
References getContext(), and llvm::MCContext::setCurrentDwarfLoc().
Referenced by llvm::MCObjectStreamer::emitDwarfLocDirective().
|
inlinevirtual |
This is same as emitDwarfLocDirective, except it has the capability to add inlined_at information.
Definition at line 915 of file MCStreamer.h.
This implements the '.loc_label Name' directive.
Definition at line 243 of file MCStreamer.cpp.
References llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), getContext(), and llvm::MCContext::getMCDwarfLineTable().
Emit a unit length field.
The actual format, DWARF32 or DWARF64, is chosen according to the settings. Return the end symbol generated inside, the caller needs to emit it.
Definition at line 1141 of file MCStreamer.cpp.
References AddComment(), emitAbsoluteSymbolDiff(), emitLabel(), llvm::dwarf::getDwarfOffsetByteSize(), llvm::Hi, llvm::Lo, and maybeEmitDwarf64Mark().
Emit a unit length field.
The actual format, DWARF32 or DWARF64, is chosen according to the settings.
Definition at line 1133 of file MCStreamer.cpp.
References AddComment(), assert(), llvm::dwarf::DW_LENGTH_lo_reserved, llvm::dwarf::DWARF64, emitIntValue(), llvm::dwarf::getDwarfOffsetByteSize(), llvm::Length, and maybeEmitDwarf64Mark().
Referenced by llvm::MCDwarfLineTableHeader::Emit().
Definition at line 385 of file MCStreamer.cpp.
Emit an ELF .size directive.
This corresponds to an assembler statement such as: .size symbol, expression
Reimplemented in llvm::MCELFStreamer, and llvm::MCWasmStreamer.
Definition at line 1322 of file MCStreamer.cpp.
Referenced by llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), and emitSymbolAttribute().
|
virtual |
Emit an ELF .symver directive.
This corresponds to an assembler statement such as: .symver _start, foo@SOME_VERSION
Reimplemented in llvm::MCELFStreamer, and llvm::RecordStreamer.
Definition at line 1323 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
|
virtual |
Emit added explicit comments.
Definition at line 126 of file MCStreamer.cpp.
|
virtual |
Switch to a new logical file.
This is used to implement the '.file "foo.c"' assembler directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1277 of file MCStreamer.cpp.
References Filename.
|
virtual |
Emit ".file assembler diretive with additioal info.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1278 of file MCStreamer.cpp.
References Filename.
|
virtual |
Emit Size bytes worth of the value specified by FillValue.
This is used to implement assembler directives such as .space or .skip.
| NumBytes | - The number of bytes to emit. |
| FillValue | - The value to use when filling bytes. |
| Loc | - The location of the expression for error reporting. |
Reimplemented in llvm::CSKYELFStreamer, llvm::MCObjectStreamer, and llvm::RISCVELFStreamer.
Definition at line 1353 of file MCStreamer.cpp.
|
virtual |
Emit NumValues copies of Size bytes.
Each Size bytes is taken from the lowest order 4 bytes of Expr expression.
This is used to implement assembler directives such as .fill.
| NumValues | - The number of copies of Size bytes to emit. |
| Size | - The size (in bytes) of each repeated value. |
| Expr | - The expression from which Size bytes are used. |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1354 of file MCStreamer.cpp.
References Size.
Emit NumBytes bytes worth of the value specified by FillValue.
This implements directives such as '.space'.
Definition at line 193 of file MCStreamer.cpp.
References llvm::MCConstantExpr::create(), emitFill(), and getContext().
Referenced by emitFill(), emitGenDwarfRanges(), and emitZeros().
Emit a .gnu_attribute directive.
Reimplemented in llvm::MCELFStreamer.
Definition at line 676 of file MCStreamer.h.
References llvm::Tag.
|
inlinevirtual |
Emit the "identifiers" directive.
This implements the '.ident "version foo"' assembler directive.
Reimplemented in llvm::MCELFStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 873 of file MCStreamer.h.
|
virtual |
Emit the given Instruction into the current section.
Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::CSKYELFStreamer, llvm::HexagonMCELFStreamer, llvm::MCObjectStreamer, llvm::MipsELFStreamer, llvm::PPCELFStreamer, llvm::PPCXCOFFStreamer, llvm::RISCVELFStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1210 of file MCStreamer.cpp.
References llvm::MCOperand::getExpr(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), llvm::MCOperand::isExpr(), and visitUsedExpr().
Referenced by EmitBinary(), emitBinary(), emitBSIC(), EmitCall(), llvm::MipsTargetStreamer::emitII(), llvm::MCObjectStreamer::emitInstruction(), emitLEASLrri(), emitLEASLzzi(), emitLEAzii(), emitLEAzzi(), emitNop(), llvm::MipsTargetStreamer::emitR(), EmitRDPC(), llvm::MipsTargetStreamer::emitRRIII(), llvm::MipsTargetStreamer::emitRRRX(), llvm::MipsTargetStreamer::emitRRX(), llvm::MipsTargetStreamer::emitRX(), EmitSETHI(), emitSIC(), and llvm::AsmPrinter::EmitToStreamer().
|
inline |
Definition at line 755 of file MCStreamer.h.
References emitIntValue().
Referenced by llvm::MCDwarfLineTableHeader::Emit(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), llvm::CodeViewContext::emitLineTableForFunction(), llvm::mcdwarf::emitListsTableHeaderStart(), EmitUnwindCode(), EmitUnwindInfo(), and llvm::FaultMaps::serializeToFaultMapSection().
|
inline |
Definition at line 756 of file MCStreamer.h.
References emitIntValue().
Referenced by ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), llvm::AMDGPUTargetELFStreamer::EmitCodeEnd(), llvm::CodeViewContext::emitFileChecksums(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::CodeViewContext::emitLineTableForFunction(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), llvm::CodeViewContext::emitStringTable(), llvm::BTFKindDataSec::emitType(), llvm::BTFKindVar::emitType(), llvm::BTFTypeArray::emitType(), llvm::BTFTypeBase::emitType(), llvm::BTFTypeDeclTag::emitType(), llvm::BTFTypeEnum64::emitType(), llvm::BTFTypeEnum::emitType(), llvm::BTFTypeFuncProto::emitType(), llvm::BTFTypeInt::emitType(), llvm::BTFTypeStruct::emitType(), EmitUnwindInfo(), maybeEmitDwarf64Mark(), and llvm::FaultMaps::serializeToFaultMapSection().
|
inline |
Definition at line 757 of file MCStreamer.h.
References emitIntValue().
Referenced by llvm::MCPseudoProbe::emit(), llvm::MCPseudoProbeInlineTree::emit(), and llvm::TargetLoweringObjectFile::emitPseudoProbeDescMetadata().
|
inline |
Definition at line 754 of file MCStreamer.h.
References emitIntValue().
Referenced by ARM64EmitUnwindCode(), ARM64EmitUnwindInfoForSegment(), ARMEmitUnwindCode(), ARMEmitUnwindInfo(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCPseudoProbe::emit(), emitEncodingByte(), llvm::CodeViewContext::emitFileChecksums(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MCELFStreamer::emitIdent(), llvm::TargetLoweringObjectFileELF::emitLinkerDirectives(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::MCDwarfLineTable::emitOne(), EmitUnwindCode(), and EmitUnwindInfo().
Definition at line 140 of file MCStreamer.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::data(), emitBytes(), emitIntValue(), llvm::sys::IsLittleEndianHost, llvm::SmallVectorImpl< T >::resize(), Size, llvm::StoreIntToMemory(), and llvm::SmallString< InternalLen >::str().
Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.
EmitIntValue - Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.
Reimplemented in llvm::MipsELFStreamer.
Definition at line 130 of file MCStreamer.cpp.
References assert(), llvm::big, llvm::support::endian::byte_swap(), emitBytes(), llvm::isIntN(), llvm::isUIntN(), llvm::little, and Size.
Referenced by llvm::MCObjectStreamer::emitAbsoluteSymbolDiff(), emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitDwarfSetLineAddr(), emitDwarfUnitLength(), llvm::MCObjectStreamer::emitFill(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), emitInt16(), emitInt32(), emitInt64(), emitInt8(), emitIntValue(), llvm::MipsELFStreamer::emitIntValue(), emitIntValueInHex(), emitIntValueInHexWithPadding(), llvm::AMDGPU::AMDGPUMCKernelCodeT::EmitKernelCodeT(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::MCDwarfLineStr::emitRef(), llvm::MCObjectStreamer::emitValueImpl(), llvm::initializeLFIMCStreamer(), llvm::operator<<(), llvm::FaultMaps::serializeToFaultMapSection(), smallData(), llvm::writeIndex(), llvm::writeIndexTable(), llvm::writeNewOffsetsTo(), and llvm::writeStringsAndOffsets().
Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers & prints in Hex format for certain modes.
Definition at line 750 of file MCStreamer.h.
References emitIntValue(), and Size.
|
inlinevirtual |
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.
Definition at line 762 of file MCStreamer.h.
References emitIntValue(), and Size.
Emit a label for Symbol into the current section.
This corresponds to an assembler statement such as: foo:
| Symbol | - The symbol to emit. A given symbol should only be emitted as a label once, and symbols emitted as a label should never be used in an assignment. |
Reimplemented in llvm::MCELFStreamer, llvm::MCGOFFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, llvm::MipsELFStreamer, llvm::PPCELFStreamer, llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 393 of file MCStreamer.cpp.
References assert(), llvm::MCTargetStreamer::emitLabel(), getContext(), getCurrentSectionOnly(), getTargetStreamer(), LFIRewriter, and llvm::MCContext::reportError().
Referenced by ARM64EmitUnwindInfoForSegment(), ARMEmitUnwindInfo(), changeSection(), llvm::MCDwarfDwoLineTable::Emit(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::CSKYConstantPool::emitAll(), emitAuthenticatedPointer(), llvm::MCDwarfLineTable::emitCU(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitDirectiveRelocJalr(), emitDwarfLineStartLabel(), emitDwarfUnitLength(), llvm::ConstantPool::emitEntries(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MCObjectStreamer::emitLabel(), llvm::RecordStreamer::emitLabel(), llvm::SystemZHLASMAsmStreamer::emitLabel(), llvm::MCObjectStreamer::emitLabelAtPos(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::MCDwarfLineTable::emitOne(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), emitPseudoProbe(), EmitUnwindInfo(), llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), endSection(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFile::getTTypeReference(), llvm::MCGenDwarfLabelEntry::Make(), llvm::MCDwarfLineEntry::make(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), and smallData().
| MCSymbol * MCStreamer::emitLineTableLabel | ( | ) |
|
inlinevirtual |
Emit the given list Options of strings as linker options into the output.
Definition at line 498 of file MCStreamer.h.
Referenced by llvm::TargetLoweringObjectFileMachO::emitLinkerDirectives().
|
virtual |
Emit a local common (.lcomm) symbol.
| Symbol | - The common symbol to emit. |
| Size | - The size of the common symbol. |
| ByteAlignment | - The alignment of the common symbol in bytes. |
Reimplemented in llvm::MCELFStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 1325 of file MCStreamer.cpp.
References Size.
Referenced by emitCommonSymbol().
|
inlinevirtual |
Emit a Linker Optimization Hint (LOH) directive.
| Args | - Arguments of the LOH. |
Definition at line 673 of file MCStreamer.h.
|
virtual |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 198 of file MCStreamer.cpp.
|
virtual |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1357 of file MCStreamer.cpp.
References A().
|
virtual |
Emit the a pseudo probe into the current section.
Definition at line 1217 of file MCStreamer.cpp.
References emitLabel(), getContext(), and llvm::Guid.
Print T and prefix it with the comment string (normally #) and optionally a tab.
This prints the comment immediately, not at the end of the current line. It is basically a safe version of EmitRawText: since it only prints comments, the object streamer ignores it instead of asserting.
Definition at line 123 of file MCStreamer.cpp.
References T.
Referenced by emitVGPRBlockComment().
If this file is backed by a assembly streamer, this dumps the specified string in the output .s file.
This capability is indicated by the hasRawTextSupport() predicate. By default this aborts.
Definition at line 1103 of file MCStreamer.cpp.
References emitRawTextImpl(), and T.
Referenced by llvm::NVPTXTargetStreamer::closeLastSection(), and llvm::NVPTXTargetStreamer::outputDwarfFileDirectives().
|
protectedvirtual |
EmitRawText - If this file is backed by an assembly streamer, this dumps the specified string in the output .s file.
This capability is indicated by the hasRawTextSupport() predicate.
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1094 of file MCStreamer.cpp.
References llvm::report_fatal_error(), and llvm::String.
Referenced by emitRawText().
|
inlinevirtual |
Record a relocation described by the .reloc directive.
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1076 of file MCStreamer.h.
References llvm::Offset.
Referenced by emitDirectiveRelocJalr().
| unsigned MCStreamer::emitSLEB128IntValue | ( | int64_t | Value | ) |
Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.
EmitSLEB128IntValue - Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers.
Definition at line 168 of file MCStreamer.cpp.
References emitBytes(), llvm::encodeSLEB128(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::raw_svector_ostream::str().
Referenced by llvm::MCPseudoProbe::emit(), and llvm::MCObjectStreamer::emitSLEB128Value().
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1352 of file MCStreamer.cpp.
|
virtual |
Emit a .subsection_via_symbols directive.
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::RecordStreamer.
Definition at line 1266 of file MCStreamer.cpp.
References llvm_unreachable.
|
pure virtual |
Add the given Attribute to Symbol.
Implemented in llvm::CFIFunctionFrameStreamer, llvm::MCDXContainerStreamer, llvm::MCELFStreamer, llvm::MCGOFFStreamer, llvm::MCSPIRVStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, llvm::MCXCOFFStreamer, llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.
References beginCOFFSymbolDef(), emitCOFFImgRel32(), emitCOFFSafeSEH(), emitCOFFSecNumber(), emitCOFFSecOffset(), emitCOFFSecRel32(), emitCOFFSectionIndex(), emitCOFFSymbolIndex(), emitCOFFSymbolStorageClass(), emitCOFFSymbolType(), emitELFSize(), emitELFSymverDirective(), emitSymbolDesc(), emitXCOFFCInfoSym(), emitXCOFFExceptDirective(), emitXCOFFLocalCommonSymbol(), emitXCOFFRefDirective(), emitXCOFFRenameDirective(), emitXCOFFSymbolLinkageWithVisibility(), endCOFFSymbolDef(), Linkage, llvm::Offset, Size, and Trap.
Referenced by llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), and smallData().
Set the DescValue for the Symbol.
| Symbol | - The symbol to have its n_desc field set. |
| DescValue | - The value to set into the n_desc field. |
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 1270 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
| void MCStreamer::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.
Definition at line 180 of file MCStreamer.cpp.
References assert(), llvm::MCSymbolRefExpr::create(), emitCOFFSecRel32(), emitValueImpl(), getContext(), and Size.
Referenced by emitAbsoluteSymbolDiff(), emitDwarfSetLineAddr(), llvm::CodeViewContext::emitFileChecksumOffset(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), and llvm::TargetLoweringObjectFileELF::emitPersonalityValueImpl().
Definition at line 889 of file MCStreamer.cpp.
References Options.
|
virtual |
Emit a thread local bss (.tbss) symbol.
| Section | - The thread local common section. |
| Symbol | - The thread local common symbol to emit. |
| Size | - The size of the symbol. |
| ByteAlignment | - The alignment of the thread local common symbol. |
Definition at line 1329 of file MCStreamer.cpp.
References Size.
Referenced by emitCommonSymbol().
Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers.
EmitULEB128IntValue - Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers.
Definition at line 158 of file MCStreamer.cpp.
References emitBytes(), llvm::encodeULEB128(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::raw_svector_ostream::str().
Referenced by llvm::MCPseudoProbe::emit(), llvm::MCPseudoProbeInlineTree::emit(), EmitAbbrev(), llvm::MCObjectStreamer::emitAbsoluteSymbolDiffAsULEB128(), emitDwarfSetLineAddr(), EmitGenDwarfAbbrev(), EmitGenDwarfInfo(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::MCDwarfLineTable::emitOne(), emitOneV5FileEntry(), llvm::TargetLoweringObjectFile::emitPseudoProbeDescMetadata(), and llvm::MCObjectStreamer::emitULEB128Value().
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1351 of file MCStreamer.cpp.
Referenced by emitAbsoluteSymbolDiffAsULEB128(), and emitGenDwarfRanges().
Definition at line 176 of file MCStreamer.cpp.
References emitValueImpl(), and Size.
Referenced by ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), EmitAbsDifference(), emitAbsoluteSymbolDiff(), emitAbsValue(), llvm::CSKYConstantPool::emitAll(), emitAuthenticatedPointer(), emitCommonSymbol(), llvm::ConstantPool::emitEntries(), emitFDESymbol(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::AMDGPU::AMDGPUMCKernelCodeT::EmitKernelCodeT(), llvm::XtensaTargetELFStreamer::emitLiteral(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), EmitPersonality(), llvm::MCDwarfLineStr::emitRef(), EmitRuntimeFunction(), EmitSymbolRefWithOfs(), EmitSymbolRefWithOfs(), EmitUnwindInfo(), llvm::AVRMCELFStreamer::emitValueForModiferKind(), and smallData().
Emit the expression Value into the output as a native integer of the given Size bytes.
This is used to implement assembler directives such as .word, .quad, etc.
| Value | - The value to emit. |
| Size | - The size of the integer (in bytes) to emit. This must match a native machine width. |
| Loc | - The location of the expression for error reporting. |
Reimplemented in llvm::CSKYELFStreamer, llvm::MCObjectStreamer, llvm::MipsELFStreamer, llvm::RISCVELFStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1348 of file MCStreamer.cpp.
References Size, and visitUsedExpr().
Referenced by emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), emitSymbolValue(), emitValue(), llvm::MCObjectStreamer::emitValueImpl(), and llvm::SystemZHLASMAsmStreamer::emitValueImpl().
|
virtual |
Emit some number of copies of Value until the byte alignment ByteAlignment is reached.
If the number of bytes need to emit for the alignment is not a multiple of ValueSize, then the contents of the emitted fill bytes is undefined.
This used to implement the .align assembler directive.
| Alignment | - The alignment to reach. |
| Fill | - The value to use when filling bytes. |
| FillLen | - The size of the integer (in bytes) to emit for Value. This must match a native machine width. |
| MaxBytesToEmit | - The maximum numbers of bytes to emit, or 0. If the alignment cannot be reached in this many bytes, no bytes are emitted. |
Reimplemented in llvm::MCObjectStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1356 of file MCStreamer.cpp.
Referenced by ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), llvm::AMDGPUTargetELFStreamer::EmitCodeEnd(), llvm::ConstantPool::emitEntries(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), EmitRuntimeFunction(), EmitUnwindInfo(), and llvm::initializeLFIMCStreamer().
|
virtual |
Emit some number of copies of Value until the byte offset Offset is reached.
This is used to implement assembler directives such as .org.
| Offset | - The offset to reach. This may be an expression, but the expression must be associated with the current section. |
| Value | - The value to use when filling bytes. |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1360 of file MCStreamer.cpp.
References llvm::Offset.
Referenced by llvm::MCParserUtils::parseAssignmentExpression().
| void MCStreamer::emitVersionForTarget | ( | const Triple & | Target, |
| const VersionTuple & | SDKVersion, | ||
| const Triple * | DarwinTargetVariantTriple, | ||
| const VersionTuple & | DarwinTargetVariantSDKVersion ) |
Definition at line 1521 of file MCStreamer.cpp.
References assert(), llvm::Triple::BridgeOS, llvm::Triple::Darwin, llvm::Triple::DriverKit, emitBuildVersion(), emitDarwinTargetVariantBuildVersion(), emitVersionForTarget(), emitVersionMin(), getMachoBuildVersionPlatformType(), getMachoBuildVersionSupportedOS(), getMachoVersionMinLoadCommandType(), llvm::Triple::IOS, llvm::Triple::isMacOSX(), llvm_unreachable, llvm::Triple::MacOSX, targetVersionOrMinimumSupportedOSVersion(), llvm::Triple::TvOS, llvm::Version, llvm::Triple::WatchOS, and llvm::Triple::XROS.
Referenced by emitVersionForTarget().
|
inlinevirtual |
Specify the Mach-O minimum deployment target version.
Definition at line 504 of file MCStreamer.h.
Referenced by emitVersionForTarget().
Emit an weak reference from Alias to Symbol.
This corresponds to an assembler statement such as: .weakref alias, symbol
| Alias | - The alias that is being created. |
| Symbol | - The symbol being aliased. |
Reimplemented in llvm::MCELFStreamer, llvm::MCObjectStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 1345 of file MCStreamer.cpp.
Definition at line 929 of file MCStreamer.cpp.
References llvm::Win64EH::Instruction::Alloc(), emitCFILabel(), EnsureValidWinFrameInfo(), getContext(), llvm::WinEH::FrameInfo::Instructions, llvm::MCContext::reportError(), and Size.
Definition at line 1002 of file MCStreamer.cpp.
References CurrentWinEpilog, emitCFILabel(), EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::EpilogMap, llvm::WinEH::FrameInfo::Function, getContext(), llvm::MCSymbol::getName(), llvm::WinEH::FrameInfo::PrologEnd, and llvm::MCContext::reportError().
Definition at line 1023 of file MCStreamer.cpp.
References CurrentWinEpilog, emitCFILabel(), EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::Function, getContext(), llvm::MCSymbol::getName(), llvm::MCContext::reportError(), and llvm::WinEH::FrameInfo::Version.
Definition at line 749 of file MCStreamer.cpp.
References llvm::WinEH::FrameInfo::ChainedParent, CurrentWinEpilog, emitCFILabel(), emitWindowsUnwindTables(), llvm::WinEH::FrameInfo::End, EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::FuncletOrFuncEnd, llvm::WinEH::FrameInfo::Function, llvm::get(), getContext(), llvm::MCSymbol::getName(), I, llvm::MCContext::reportError(), switchSection(), and llvm::WinEH::FrameInfo::TextSection.
Definition at line 992 of file MCStreamer.cpp.
References emitCFILabel(), EnsureValidWinFrameInfo(), and llvm::WinEH::FrameInfo::PrologEnd.
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.
We cannot use the End marker, as it is not set at the point of emitting .xdata, in order to indicate that the frame is active.
Definition at line 777 of file MCStreamer.cpp.
References llvm::WinEH::FrameInfo::ChainedParent, emitCFILabel(), EnsureValidWinFrameInfo(), and llvm::WinEH::FrameInfo::FuncletOrFuncEnd.
Definition at line 978 of file MCStreamer.cpp.
References emitCFILabel(), EnsureValidWinFrameInfo(), getContext(), llvm::WinEH::FrameInfo::Instructions, llvm::Win64EH::Instruction::PushMachFrame(), and llvm::MCContext::reportError().
|
virtual |
Definition at line 895 of file MCStreamer.cpp.
References emitCFILabel(), encodeSEHRegNum(), EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::Instructions, and llvm::Win64EH::Instruction::PushNonVol().
|
virtual |
Definition at line 946 of file MCStreamer.cpp.
References emitCFILabel(), encodeSEHRegNum(), EnsureValidWinFrameInfo(), getContext(), llvm::WinEH::FrameInfo::Instructions, llvm::Offset, llvm::MCContext::reportError(), and llvm::Win64EH::Instruction::SaveNonVol().
|
virtual |
Definition at line 963 of file MCStreamer.cpp.
References emitCFILabel(), encodeSEHRegNum(), EnsureValidWinFrameInfo(), getContext(), llvm::WinEH::FrameInfo::Instructions, llvm::Offset, llvm::MCContext::reportError(), and llvm::Win64EH::Instruction::SaveXMM().
|
virtual |
Definition at line 907 of file MCStreamer.cpp.
References emitCFILabel(), encodeSEHRegNum(), EnsureValidWinFrameInfo(), getContext(), llvm::WinEH::FrameInfo::Instructions, llvm::WinEH::FrameInfo::LastFrameInst, llvm::Offset, llvm::MCContext::reportError(), and llvm::Win64EH::Instruction::SetFPReg().
Definition at line 789 of file MCStreamer.cpp.
References llvm::WinEH::FrameInfo::ChainedParent, emitCFILabel(), llvm::WinEH::FrameInfo::End, EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::Function, getContext(), getCurrentSectionOnly(), llvm::MCSymbol::getName(), llvm::WinEH::FrameInfo::PrologEnd, llvm::MCContext::reportError(), and llvm::WinEH::FrameInfo::TextSection.
Definition at line 730 of file MCStreamer.cpp.
References emitCFILabel(), getContext(), getCurrentSectionOnly(), llvm::MCContext::reportError(), and llvm::MCAsmInfo::usesWindowsCFI().
Definition at line 1043 of file MCStreamer.cpp.
References CurrentWinEpilog, emitCFILabel(), EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::Function, getContext(), llvm::MCSymbol::getName(), and llvm::MCContext::reportError().
Definition at line 1060 of file MCStreamer.cpp.
References llvm::WinEH::FrameInfo::DefaultVersion, EnsureValidWinFrameInfo(), llvm::WinEH::FrameInfo::Function, getContext(), llvm::MCSymbol::getName(), llvm::MCContext::reportError(), llvm::Version, and llvm::WinEH::FrameInfo::Version.
|
protectedvirtual |
Definition at line 1108 of file MCStreamer.cpp.
Referenced by emitWinCFIEndProc().
|
protectedvirtual |
Definition at line 1110 of file MCStreamer.cpp.
Reimplemented in llvm::MCWinCOFFStreamer.
Definition at line 833 of file MCStreamer.cpp.
References EnsureValidWinFrameInfo().
Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.
| Name | - The embedded metadata name |
| Metadata | - The embedded metadata |
Reimplemented in llvm::MCXCOFFStreamer.
Definition at line 1317 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
|
virtual |
Emit an XCOFF .except directive which adds information about a trap instruction to the object file exception section.
| Symbol | - The function containing the trap. |
| Lang | - The language code for the exception entry. |
| Reason | - The reason code for the exception entry. |
Reimplemented in llvm::MCXCOFFStreamer.
Definition at line 1308 of file MCStreamer.cpp.
References llvm::report_fatal_error(), and Trap.
Referenced by emitSymbolAttribute().
|
virtual |
Emits an lcomm directive with XCOFF csect information.
| LabelSym | - Label on the block of storage. |
| Size | - The size of the block of storage. |
| CsectSym | - Csect name for the block of storage. |
| Alignment | - The alignment of the symbol in bytes. |
Reimplemented in llvm::MCXCOFFStreamer.
Definition at line 1288 of file MCStreamer.cpp.
References llvm_unreachable, and Size.
Referenced by emitSymbolAttribute().
Emit a XCOFF .ref directive which creates R_REF type entry in the relocation table for one or more symbols.
| Sym | - The symbol on the .ref directive. |
Reimplemented in llvm::MCXCOFFStreamer.
Definition at line 1304 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.
| Name | - The name used internally in the assembly for references to the symbol. |
| Rename | - The value to which the Name parameter is changed at the end of assembly. |
Reimplemented in llvm::MCXCOFFStreamer.
Definition at line 1301 of file MCStreamer.cpp.
Referenced by emitSymbolAttribute().
|
virtual |
Emit a symbol's linkage and visibility with a linkage directive for XCOFF.
| Symbol | - The symbol to emit. |
| Linkage | - The linkage of the symbol to emit. |
| Visibility | - The visibility of the symbol to emit or MCSA_Invalid if the symbol does not have an explicit visibility. |
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::MCXCOFFStreamer.
Definition at line 1294 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
|
virtual |
Emit the zerofill section and an optional symbol.
| Section | - The zerofill section to create and or to put the symbol |
| Symbol | - The zerofill symbol to emit, if non-NULL. |
| Size | - The size of the zerofill symbol. |
| ByteAlignment | - The alignment of the zerofill symbol. |
Reimplemented in llvm::RecordStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1327 of file MCStreamer.cpp.
Referenced by emitCommonSymbol().
| void MCStreamer::emitZeros | ( | uint64_t | NumBytes | ) |
Emit NumBytes worth of zeros.
The implementation in this class just redirects to emitFill.
This function properly handles data in virtual sections.
Definition at line 202 of file MCStreamer.cpp.
References emitFill().
Referenced by llvm::AsmPrinter::XRayFunctionEntry::emit(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCXCOFFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), and llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol().
|
virtual |
Marks the end of the symbol definition.
Reimplemented in llvm::CFIFunctionFrameStreamer, llvm::MCWinCOFFStreamer, and llvm::RecordStreamer.
Definition at line 1274 of file MCStreamer.cpp.
References llvm_unreachable.
Referenced by emitSymbolAttribute().
Definition at line 1415 of file MCStreamer.cpp.
References emitLabel(), llvm::MCSymbol::isInSection(), and switchSection().
Referenced by llvm::MCObjectStreamer::emitDwarfLineEndEntry(), and llvm::AArch64TargetStreamer::emitNoteSection().
| WinEH::FrameInfo * MCStreamer::EnsureValidWinFrameInfo | ( | SMLoc | Loc | ) |
Retrieve the current frame info if one is available and it is not yet closed.
Otherwise, issue an error and return null.
Definition at line 715 of file MCStreamer.cpp.
References getContext(), llvm::MCContext::reportError(), and llvm::MCAsmInfo::usesWindowsCFI().
Referenced by emitWinCFIAllocStack(), emitWinCFIBeginEpilogue(), emitWinCFIEndEpilogue(), emitWinCFIEndProc(), emitWinCFIEndProlog(), emitWinCFIFuncletOrFuncEnd(), emitWinCFIPushFrame(), emitWinCFIPushReg(), emitWinCFISaveReg(), emitWinCFISaveXMM(), emitWinCFISetFrame(), emitWinCFISplitChained(), emitWinCFIUnwindV2Start(), emitWinCFIUnwindVersion(), emitWinEHHandler(), and emitWinEHHandlerData().
Finish emission of machine code.
Definition at line 1112 of file MCStreamer.cpp.
References DwarfFrameInfos, llvm::MCTargetStreamer::finish(), finishImpl(), getContext(), getTargetStreamer(), and llvm::MCContext::reportError().
|
virtual |
Streamer specific finalization.
Reimplemented in llvm::MCELFStreamer, llvm::MCGOFFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, llvm::MCWinCOFFStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1362 of file MCStreamer.cpp.
Referenced by finish().
|
inline |
Definition at line 337 of file MCStreamer.h.
Referenced by llvm::X86_MC::emitInstruction().
|
inlinevirtual |
Reimplemented in llvm::MCObjectStreamer.
Definition at line 327 of file MCStreamer.h.
Referenced by switchSection().
Get the .pdata section used for the given section.
Typically the given section is either the main .text section or some other COMDAT .text section, but it may be any section containing code.
Definition at line 877 of file MCStreamer.cpp.
References getContext(), and getWinCFISection().
Referenced by llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), and llvm::Win64EH::UnwindEmitter::Emit().
Get the .xdata section used for the given section.
Definition at line 883 of file MCStreamer.cpp.
References getContext(), and getWinCFISection().
Referenced by llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), llvm::Win64EH::UnwindEmitter::Emit(), llvm::Win64EH::ARM64UnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::ARMUnwindEmitter::EmitUnwindInfo(), and llvm::Win64EH::UnwindEmitter::EmitUnwindInfo().
|
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.
Definition at line 113 of file MCStreamer.cpp.
References llvm::nulls().
|
inline |
Definition at line 322 of file MCStreamer.h.
Referenced by llvm::AssemblerConstantPools::addEntry(), llvm::CSKYConstantPool::addEntry(), llvm::CodeViewContext::addFile(), ARM64EmitRuntimeFunction(), ARM64EmitUnwindInfo(), ARM64EmitUnwindInfoForSegment(), ARMEmitRuntimeFunction(), ARMEmitUnwindInfo(), buildSymbolDiff(), buildSymbolDiff(), llvm::MCObjectStreamer::changeSection(), changeSection(), llvm::NVPTXTargetStreamer::changeSection(), llvm::SystemZHLASMAsmStreamer::changeSection(), checkARM64Instructions(), checkARMInstructions(), checkCVLocSection(), createAsmTargetStreamer(), createObjectTargetStreamer(), llvm::MCDwarfLineAddr::Emit(), llvm::MCDwarfLineTableHeader::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::MCDwarfFrameEmitter::emit(), llvm::MCDwarfLineTable::emit(), llvm::MCPseudoProbeSections::emit(), llvm::MCPseudoProbeTable::emit(), llvm::MCSFrameEmitter::emit(), EmitAbsDifference(), llvm::CSKYConstantPool::emitAll(), llvm::AMDGPUTargetELFStreamer::EmitAMDGPUSymbolType(), llvm::MipsELFStreamer::emitCFIEndProcImpl(), llvm::MCObjectStreamer::emitCFILabel(), llvm::MipsELFStreamer::emitCFILabel(), emitCFILabelDirective(), emitCFIStartProc(), llvm::MipsELFStreamer::emitCFIStartProcImpl(), llvm::MCWinCOFFStreamer::emitCOFFImgRel32(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::emitCOFFSecNumber(), llvm::MCWinCOFFStreamer::emitCOFFSecOffset(), llvm::MCWinCOFFStreamer::emitCOFFSecRel32(), llvm::MCWinCOFFStreamer::emitCOFFSectionIndex(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWasmStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::MCObjectStreamer::emitCVDefRangeDirective(), llvm::MCObjectStreamer::emitCVFileChecksumOffsetDirective(), llvm::MCObjectStreamer::emitCVFileChecksumsDirective(), emitCVFileDirective(), emitCVFuncIdDirective(), llvm::MCObjectStreamer::emitCVInlineLinetableDirective(), emitCVInlineSiteIdDirective(), llvm::MCObjectStreamer::emitCVLinetableDirective(), llvm::MCObjectStreamer::emitCVLocDirective(), llvm::MCObjectStreamer::emitCVStringTableDirective(), llvm::MipsTargetAsmStreamer::emitDTPRel32Value(), llvm::MipsTargetAsmStreamer::emitDTPRel64Value(), llvm::MCObjectStreamer::emitDwarfAdvanceLineAddr(), emitDwarfFile0Directive(), llvm::MCObjectStreamer::emitDwarfLineEndEntry(), emitDwarfLocDirective(), emitDwarfLocLabelDirective(), emitFDESymbol(), llvm::CodeViewContext::emitFileChecksumOffset(), llvm::CodeViewContext::emitFileChecksums(), llvm::MCObjectStreamer::emitFill(), emitFill(), llvm::MCObjectStreamer::emitFrames(), llvm::AMDGPUAsmPrinter::emitFunctionBodyEnd(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MipsTargetAsmStreamer::emitGPRel32Value(), llvm::MipsTargetAsmStreamer::emitGPRel64Value(), llvm::SystemZHLASMAsmStreamer::emitHLASMValueImpl(), llvm::MipsELFStreamer::emitInstruction(), llvm::MCGOFFStreamer::emitLabel(), emitLabel(), llvm::CodeViewContext::emitLineTableForFunction(), emitLineTableLabel(), llvm::mcdwarf::emitListsTableHeaderStart(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWasmStreamer::emitLocalCommonSymbol(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), emitNonLazySymbolPointer(), emitNonLazySymbolPointer(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::MCDwarfLineTable::emitOne(), EmitPersonality(), emitPseudoProbe(), llvm::MCDwarfLineStr::emitRef(), llvm::MCObjectStreamer::emitRelocDirective(), EmitRuntimeFunction(), llvm::MCDwarfLineStr::emitSection(), llvm::CodeViewContext::emitStringTable(), llvm::MCELFStreamer::emitSymbolAttribute(), EmitSymbolRefWithOfs(), EmitSymbolRefWithOfs(), emitSymbolValue(), llvm::MipsTargetAsmStreamer::emitTPRel32Value(), llvm::MipsTargetAsmStreamer::emitTPRel64Value(), EmitUnwindInfo(), llvm::AVRMCELFStreamer::emitValueForModiferKind(), llvm::MCObjectStreamer::emitValueImpl(), llvm::MCELFStreamer::emitWeakReference(), llvm::MCWinCOFFStreamer::emitWeakReference(), emitWinCFIAllocStack(), emitWinCFIBeginEpilogue(), emitWinCFIEndEpilogue(), emitWinCFIEndProc(), emitWinCFIPushFrame(), emitWinCFISaveReg(), emitWinCFISaveXMM(), emitWinCFISetFrame(), emitWinCFISplitChained(), emitWinCFIStartProc(), emitWinCFIUnwindV2Start(), emitWinCFIUnwindVersion(), emitWinEHHandler(), llvm::MCXCOFFStreamer::emitXCOFFRefDirective(), llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), EnsureValidWinFrameInfo(), finish(), llvm::MCGOFFStreamer::finishImpl(), llvm::MCObjectStreamer::finishImpl(), llvm::MCWinCOFFStreamer::finishImpl(), llvm::RecordStreamer::flushSymverDirectives(), forceExpAbs(), llvm::MCObjectStreamer::generateCompactUnwindEncodings(), getAssociatedPDataSection(), getAssociatedXDataSection(), getDataAlignmentFactor(), getDwarfLineTableSymbol(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::RISCVMCAsmInfo::getExprForFDESymbol(), llvm::SparcELFMCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::SparcELFMCAsmInfo::getExprForPersonalitySymbol(), llvm::X86_64MCAsmInfoDarwin::getExprForPersonalitySymbol(), getSizeForEncoding(), GetSubDivExpr(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::MCELFStreamer::initSections(), initSections(), llvm::MCWinCOFFStreamer::initSections(), llvm::MCGenDwarfLabelEntry::Make(), llvm::MCDwarfLineEntry::make(), llvm::MSP430TargetELFStreamer::MSP430TargetELFStreamer(), llvm::MCObjectStreamer::reset(), smallData(), llvm::XtensaTargetELFStreamer::startLiteralSection(), switchSection(), tryEmitDwarfFileDirective(), and llvm::write().
|
inline |
Definition at line 447 of file MCStreamer.h.
References getCurrentFragment().
Referenced by llvm::MCObjectStreamer::addFixup().
|
inline |
Definition at line 438 of file MCStreamer.h.
References assert(), CurFrag, llvm::MCFragment::FT_Data, and getCurrentSection().
Referenced by llvm::MCPseudoProbe::emit(), llvm::MCObjectStreamer::emitCodeAlignment(), llvm::MCObjectStreamer::emitDwarfAdvanceFrameAddr(), llvm::MCObjectStreamer::emitDwarfAdvanceLineAddr(), llvm::MCObjectStreamer::emitInstToFragment(), llvm::MCObjectStreamer::emitSFrameCalculateFuncOffset(), llvm::MCObjectStreamer::emitSLEB128Value(), llvm::CodeViewContext::emitStringTable(), llvm::MCObjectStreamer::emitULEB128Value(), llvm::MCObjectStreamer::emitValueToAlignment(), and getCurFragSize().
|
inline |
Return the current section that the streamer is emitting code to.
Definition at line 422 of file MCStreamer.h.
Referenced by llvm::MCELFStreamer::emitCommonSymbol(), getCurrentFragment(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and pushSection().
|
inline |
Definition at line 427 of file MCStreamer.h.
References CurFrag.
Referenced by llvm::AssemblerConstantPools::addEntry(), llvm::CSKYConstantPool::addEntry(), checkCVLocSection(), llvm::AssemblerConstantPools::clearCacheForCurrentSection(), llvm::MCObjectStreamer::emitBytes(), llvm::SystemZHLASMAsmStreamer::emitBytes(), emitCFIStartProc(), llvm::MCWinCOFFStreamer::emitCOFFSymbolIndex(), llvm::MCObjectStreamer::emitDwarfLocDirective(), llvm::MCObjectStreamer::emitFill(), llvm::MCObjectStreamer::emitFill(), llvm::AssemblerConstantPools::emitForCurrentSection(), llvm::MCObjectStreamer::emitInstruction(), llvm::MCELFStreamer::emitLabel(), llvm::MCGOFFStreamer::emitLabel(), emitLabel(), llvm::MCWasmStreamer::emitLabel(), llvm::SystemZHLASMAsmStreamer::emitLabel(), llvm::MCELFStreamer::emitLabelAtPos(), llvm::MCObjectStreamer::emitLabelAtPos(), llvm::MCWasmStreamer::emitLabelAtPos(), emitLineTableLabel(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::MCObjectStreamer::emitNops(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::MCObjectStreamer::emitPrefAlign(), llvm::MCObjectStreamer::emitRelocDirective(), llvm::MCObjectStreamer::emitValueImpl(), llvm::SystemZHLASMAsmStreamer::emitValueImpl(), emitWinCFISplitChained(), emitWinCFIStartProc(), llvm::MCDwarfLineTable::endCurrentSeqAndEmitLineStreamLabel(), and llvm::MCGenDwarfLabelEntry::Make().
|
inline |
Definition at line 359 of file MCStreamer.h.
References CurrentWinEpilog.
|
inlineprotected |
Definition at line 282 of file MCStreamer.h.
| ArrayRef< MCDwarfFrameInfo > MCStreamer::getDwarfFrameInfos | ( | ) | const |
Definition at line 119 of file MCStreamer.cpp.
References DwarfFrameInfos.
Referenced by llvm::MCDwarfFrameEmitter::emit(), and llvm::MCSFrameEmitter::emit().
Definition at line 249 of file MCStreamer.cpp.
References getContext(), llvm::MCDwarfLineTable::getLabel(), llvm::MCContext::getMCDwarfLineTable(), and llvm::MCDwarfLineTable::setLabel().
Referenced by llvm::MCGenDwarfInfo::Emit().
|
inline |
Definition at line 316 of file MCStreamer.h.
References LFIRewriter.
Returns the mnemonic for MI, if the streamer has access to a instruction printer and returns an empty string otherwise.
Definition at line 477 of file MCStreamer.h.
References MI.
Referenced by getMIMnemonic().
| unsigned MCStreamer::getNumFrameInfos | ( | ) |
Definition at line 118 of file MCStreamer.cpp.
References DwarfFrameInfos.
Referenced by llvm::CFIFunctionFrameStreamer::emitCFIStartProcImpl(), and llvm::MCObjectStreamer::emitFrames().
|
inline |
Definition at line 354 of file MCStreamer.h.
|
inline |
Return the previous section that the streamer is emitting code to.
Definition at line 432 of file MCStreamer.h.
Referenced by llvm::RISCVELFStreamer::changeSection(), and pushSection().
|
inline |
Definition at line 310 of file MCStreamer.h.
Referenced by llvm::MCWasmStreamer::emitCommonSymbol(), llvm::MCELFStreamer::emitELFSymverDirective(), llvm::MCWasmStreamer::emitLocalCommonSymbol(), llvm::MCELFStreamer::emitSymbolAttribute(), and llvm::MCELFStreamer::emitWeakReference().
|
inline |
Definition at line 332 of file MCStreamer.h.
Referenced by llvm::MipsELFStreamer::createPendingLabelRelocs(), emitAssignment(), emitLabel(), llvm::AArch64_ELFTargetObjectFile::emitPersonalityValueImpl(), and finish().
|
inline |
Definition at line 330 of file MCStreamer.h.
Referenced by llvm::MCObjectStreamer::getAssemblerPtr().
|
inline |
Definition at line 355 of file MCStreamer.h.
Referenced by llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), and llvm::Win64EH::UnwindEmitter::Emit().
|
inlinevirtual |
Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.
Reimplemented in llvm::CFIFunctionFrameStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 374 of file MCStreamer.h.
| bool MCStreamer::hasUnfinishedDwarfFrameInfo | ( | ) |
Definition at line 259 of file MCStreamer.cpp.
Referenced by llvm::CFIFunctionFrameStreamer::emitInstruction().
|
virtual |
Create the default sections and set the initial one.
Reimplemented in llvm::MCELFStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 389 of file MCStreamer.cpp.
References getContext(), and switchSectionNoPrint().
|
inline |
Definition at line 363 of file MCStreamer.h.
References CurrentWinEpilog.
|
inlinevirtual |
Is the integrated assembler required for this streamer to function correctly?
Reimplemented in llvm::MCObjectStreamer.
Definition at line 378 of file MCStreamer.h.
|
inline |
Definition at line 323 of file MCStreamer.h.
References IsObj.
|
inlinevirtual |
Return true if this streamer supports verbose assembly and if it is enabled.
Reimplemented in llvm::SystemZHLASMAsmStreamer.
Definition at line 370 of file MCStreamer.h.
| void MCStreamer::maybeEmitDwarf64Mark | ( | ) |
Emit a special value of 0xffffffff if producing 64-bit debugging info.
Definition at line 1126 of file MCStreamer.cpp.
References AddComment(), llvm::dwarf::DW_LENGTH_DWARF64, llvm::dwarf::DWARF64, and emitInt32().
Referenced by emitDwarfUnitLength(), and emitDwarfUnitLength().
Reimplemented in llvm::MCObjectStreamer.
Definition at line 1101 of file MCStreamer.h.
Referenced by llvm::MCContext::finalizeDwarfSections().
|
delete |
References MCStreamer().
|
virtual |
Restore the current and previous section from the section stack.
Calls changeSection as needed.
Returns false if the stack was empty.
Definition at line 1364 of file MCStreamer.cpp.
References changeSection(), and I.
Referenced by llvm::AMDGPUTargetELFStreamer::EmitAMDKernelCodeT(), llvm::AMDGPUTargetELFStreamer::EmitCodeEnd(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MCELFStreamer::emitIdent(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), and llvm::initializeLFIMCStreamer().
|
inline |
Save the current and previous section on the section stack.
Definition at line 449 of file MCStreamer.h.
References getCurrentSection(), and getPreviousSection().
Referenced by llvm::AMDGPUTargetELFStreamer::EmitAMDKernelCodeT(), llvm::AMDGPUTargetELFStreamer::EmitCodeEnd(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MCELFStreamer::emitIdent(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), and llvm::initializeLFIMCStreamer().
|
virtual |
State management.
Reimplemented in llvm::CSKYELFStreamer, llvm::MCELFStreamer, llvm::MCObjectStreamer, llvm::MCWasmStreamer, and llvm::MCWinCOFFStreamer.
Definition at line 104 of file MCStreamer.cpp.
References CurFrag, and DwarfFrameInfos.
Referenced by llvm::CodeGenTargetMachineImpl::createMCStreamer(), and llvm::MCObjectStreamer::reset().
|
inline |
Definition at line 336 of file MCStreamer.h.
Referenced by llvm::MCObjectStreamer::MCObjectStreamer(), and llvm::SystemZHLASMAsmStreamer::SystemZHLASMAsmStreamer().
| void MCStreamer::setLFIRewriter | ( | std::unique_ptr< MCLFIRewriter > | Rewriter | ) |
Definition at line 100 of file MCStreamer.cpp.
References LFIRewriter.
Definition at line 309 of file MCStreamer.h.
|
inline |
Definition at line 305 of file MCStreamer.h.
Referenced by llvm::MCTargetStreamer::MCTargetStreamer().
|
inline |
Definition at line 329 of file MCStreamer.h.
Definition at line 1390 of file MCStreamer.cpp.
References getAssemblerPtr(), getContext(), llvm::MCExpr::getLoc(), llvm::isUInt(), llvm::MCContext::reportError(), and switchSection().
Set the current section where code is being emitted to Section.
This is required to update CurSection.
This corresponds to assembler directives like .section, .text, etc.
Reimplemented in llvm::MipsELFStreamer.
Definition at line 1379 of file MCStreamer.cpp.
References assert(), and changeSection().
Referenced by addAllTypesFromDWP(), addAllTypesFromTypesSection(), llvm::MCDwarfDwoLineTable::Emit(), llvm::MCGenDwarfInfo::Emit(), llvm::Win64EH::ARM64UnwindEmitter::Emit(), llvm::Win64EH::ARMUnwindEmitter::Emit(), llvm::Win64EH::UnwindEmitter::Emit(), llvm::MCDwarfFrameEmitter::emit(), llvm::MCDwarfLineTable::emit(), llvm::MCPseudoProbeSections::emit(), llvm::MCSFrameEmitter::emit(), llvm::CSKYConstantPool::emitAll(), llvm::MCWinCOFFStreamer::emitCOFFSafeSEH(), llvm::MCELFStreamer::emitCommonSymbol(), llvm::MCWinCOFFStreamer::emitCommonSymbol(), emitConstantPool(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::MCObjectStreamer::emitDwarfLineEndEntry(), EmitGenDwarfAbbrev(), EmitGenDwarfAranges(), EmitGenDwarfInfo(), emitGenDwarfRanges(), llvm::MCELFStreamer::emitIdent(), llvm::TargetLoweringObjectFileCOFF::emitLinkerDirectives(), llvm::TargetLoweringObjectFileELF::emitLinkerDirectives(), llvm::XtensaTargetELFStreamer::emitLiteral(), llvm::MCWinCOFFStreamer::emitLocalCommonSymbol(), llvm::MipsTargetELFStreamer::emitMipsAbiFlags(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::TargetLoweringObjectFileELF::emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), emitNonLazyStubs(), llvm::RISCVTargetELFStreamer::emitNoteGnuPropertySection(), llvm::AArch64TargetStreamer::emitNoteSection(), llvm::TargetLoweringObjectFileELF::emitPersonalityValue(), llvm::TargetLoweringObjectFile::emitPseudoProbeDescMetadata(), llvm::MCDwarfLineStr::emitSection(), llvm::Win64EH::ARM64UnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::ARMUnwindEmitter::EmitUnwindInfo(), llvm::Win64EH::UnwindEmitter::EmitUnwindInfo(), emitWinCFIEndProc(), endSection(), llvm::MipsTargetELFStreamer::finish(), llvm::MCWinCOFFStreamer::finishImpl(), llvm::handleSection(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), llvm::initializeLFIMCStreamer(), llvm::MCELFStreamer::initSections(), llvm::MCWinCOFFStreamer::initSections(), llvm::FaultMaps::serializeToFaultMapSection(), llvm::StackMaps::serializeToStackMapSection(), smallData(), switchSection(), llvm::MipsELFStreamer::switchSection(), llvm::write(), llvm::writeIndex(), and llvm::writeStringsAndOffsets().
| void MCStreamer::switchSectionNoPrint | ( | MCSection * | Section | ) |
Similar to switchSection, but does not print the section directive.
Definition at line 1409 of file MCStreamer.cpp.
References changeSection().
Referenced by initSections().
|
virtual |
Associate a filename with a specified logical file number.
Also associate a directory, optional checksum, and optional source text with the logical file. This implements the DWARF2 '.file 4 "dir/foo.c"' assembler directive, and the DWARF5 '.file 4 "dir/foo.c" md5 "..." source "..."' assembler directive.
Definition at line 204 of file MCStreamer.cpp.
References Filename, getContext(), and llvm::MCContext::getDwarfFile().
Referenced by emitDwarfFileDirective().
Definition at line 1180 of file MCStreamer.cpp.
References llvm::MCExpr::Binary, llvm::cast(), llvm::MCExpr::Constant, llvm::MCExpr::getKind(), llvm::MCBinaryExpr::getLHS(), llvm::MCBinaryExpr::getRHS(), llvm::MCExpr::Specifier, llvm::MCExpr::SymbolRef, llvm::MCExpr::Target, llvm::MCExpr::Unary, visitUsedExpr(), and visitUsedSymbol().
Referenced by emitAssignment(), emitInstruction(), llvm::MCObjectStreamer::emitRelocDirective(), llvm::HexagonMCELFStreamer::EmitSymbol(), emitValueImpl(), llvm::AMDGPUMCExpr::visitUsedExpr(), llvm::HexagonMCExpr::visitUsedExpr(), visitUsedExpr(), and ~MCStreamer().
Reimplemented in llvm::MCObjectStreamer, and llvm::SystemZHLASMAsmStreamer.
Definition at line 1177 of file MCStreamer.cpp.
Referenced by visitUsedExpr(), and ~MCStreamer().
|
protected |
Definition at line 267 of file MCStreamer.h.
Referenced by llvm::MCObjectStreamer::addFixup(), addFragment(), llvm::MCObjectStreamer::appendContents(), llvm::MCObjectStreamer::appendContents(), llvm::MCObjectStreamer::changeSection(), changeSection(), llvm::MCXCOFFStreamer::changeSection(), llvm::MCObjectStreamer::emitLabel(), llvm::MCObjectStreamer::getCurFragEnd(), getCurrentFragment(), getCurrentSectionOnly(), and reset().
|
protected |
Definition at line 265 of file MCStreamer.h.
Referenced by emitWinCFIBeginEpilogue(), emitWinCFIEndEpilogue(), emitWinCFIEndProc(), emitWinCFIUnwindV2Start(), getCurrentWinEpilog(), and isInEpilogCFI().
|
protected |
Definition at line 269 of file MCStreamer.h.
Referenced by emitCFIStartProc(), finish(), llvm::MCObjectStreamer::generateCompactUnwindEncodings(), getDwarfFrameInfos(), getNumFrameInfos(), and reset().
|
protected |
Definition at line 262 of file MCStreamer.h.
Referenced by isObj(), and llvm::MCObjectStreamer::MCObjectStreamer().
|
protected |
Definition at line 295 of file MCStreamer.h.
Referenced by llvm::MCObjectStreamer::emitInstruction(), emitLabel(), getLFIRewriter(), and setLFIRewriter().