13#ifndef LLVM_MC_MCSTREAMER_H
14#define LLVM_MC_MCSTREAMER_H
107 virtual void emitLabel(
MCSymbol *Symbol);
131 virtual void emitConstantPools();
133 virtual void finish();
197 virtual void reset();
209 std::unique_ptr<AssemblerConstantPools> ConstantPools;
224 std::unique_ptr<MCTargetStreamer> TargetStreamer;
234 std::vector<std::unique_ptr<WinEH::FrameInfo>> WinFrameInfos;
237 size_t CurrentProcWinFrameInfoStartIndex;
240 uint8_t DefaultWinCFIUnwindVersion = 1;
248 const SMLoc *StartTokLocPtr =
nullptr;
254 unsigned NextWinCFIID = 0;
256 bool UseAssemblerInfoForParsing =
true;
263 bool AllowAutoPadding =
false;
287 return CurrentWinFrameInfo;
292 virtual void emitWindowsUnwindTables();
297 bool checkCVLocSection(
unsigned FuncId,
SMLoc Loc);
310 TargetStreamer.reset(TS);
315 return StartTokLocPtr ? *StartTokLocPtr :
SMLoc();
318 void setLFIRewriter(std::unique_ptr<MCLFIRewriter> Rewriter);
324 virtual void reset();
337 return TargetStreamer.get();
353 unsigned getNumFrameInfos();
356 bool hasUnfinishedDwarfFrameInfo();
360 return WinFrameInfos;
372 return CurrentWinFrameInfo && !CurrentWinFrameInfo->End &&
373 CurrentWinFrameInfo->PrologEnd;
415 virtual void emitRawComment(
const Twine &
T,
bool TabPrefix =
true);
419 virtual void addExplicitComment(
const Twine &
T);
422 virtual void emitExplicitComments();
434 if (!SectionStack.empty())
435 return SectionStack.back().first;
444 if (!SectionStack.empty())
445 return SectionStack.back().second;
461 SectionStack.push_back(
469 virtual bool popSection();
479 void switchSectionNoPrint(
MCSection *Section);
502 virtual void emitEHSymAttributes(
const MCSymbol *Symbol,
MCSymbol *EHSymbol);
505 virtual void emitSubsectionsViaSymbols();
516 unsigned Minor,
unsigned Update,
522 unsigned Minor,
unsigned Update,
535 const Triple *DarwinTargetVariantTriple,
656 unsigned Lang,
unsigned Reason,
657 unsigned FunctionSize,
bool hasDebug);
697 Align ByteAlignment) = 0;
705 Align ByteAlignment);
779 virtual void emitULEB128Value(
const MCExpr *
Value);
781 virtual void emitSLEB128Value(
const MCExpr *
Value);
785 unsigned emitULEB128IntValue(
uint64_t Value,
unsigned PadTo = 0);
789 unsigned emitSLEB128IntValue(int64_t
Value);
793 void emitSymbolValue(
const MCSymbol *Sym,
unsigned Size,
794 bool IsSectionRelative =
false);
818 virtual void emitFill(
const MCExpr &NumValues, int64_t
Size, int64_t Expr,
821 virtual void emitNops(int64_t NumBytes, int64_t ControlledNopLength,
844 virtual void emitValueToAlignment(
Align Alignment, int64_t Fill = 0,
846 unsigned MaxBytesToEmit = 0);
859 unsigned MaxBytesToEmit = 0);
861 virtual void emitPrefAlign(
Align A,
const MCSymbol &End,
bool EmitNops,
893 std::optional<MD5::MD5Result> Checksum = std::nullopt,
894 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0) {
907 std::optional<MD5::MD5Result> Checksum = std::nullopt,
908 std::optional<StringRef> Source = std::nullopt,
unsigned CUID = 0);
912 std::optional<MD5::MD5Result> Checksum,
913 std::optional<StringRef> Source,
916 virtual void emitCFIBKeyFrame();
917 virtual void emitCFIMTETaggedFrame();
921 virtual void emitDwarfLocDirective(
unsigned FileNo,
unsigned Line,
922 unsigned Column,
unsigned Flags,
923 unsigned Isa,
unsigned Discriminator,
930 unsigned FileNo,
unsigned Line,
unsigned Column,
unsigned FileIA,
931 unsigned LineIA,
unsigned ColumnIA,
const MCSymbol *Sym,
unsigned Flags,
932 unsigned Isa,
unsigned Discriminator,
StringRef FileName,
936 virtual void emitDwarfLocLabelDirective(SMLoc Loc, StringRef Name);
941 virtual bool emitCVFileDirective(
unsigned FileNo, StringRef
Filename,
942 ArrayRef<uint8_t> Checksum,
943 unsigned ChecksumKind);
946 virtual bool emitCVFuncIdDirective(
unsigned FunctionId);
950 virtual bool emitCVInlineSiteIdDirective(
unsigned FunctionId,
unsigned IAFunc,
951 unsigned IAFile,
unsigned IALine,
952 unsigned IACol, SMLoc Loc);
955 virtual void emitCVLocDirective(
unsigned FunctionId,
unsigned FileNo,
956 unsigned Line,
unsigned Column,
957 bool PrologueEnd,
bool IsStmt,
958 StringRef FileName, SMLoc Loc);
961 virtual void emitCVLinetableDirective(
unsigned FunctionId,
962 const MCSymbol *FnStart,
963 const MCSymbol *FnEnd);
967 virtual void emitCVInlineLinetableDirective(
unsigned PrimaryFunctionId,
968 unsigned SourceFileId,
969 unsigned SourceLineNum,
970 const MCSymbol *FnStartSym,
971 const MCSymbol *FnEndSym);
975 virtual void emitCVDefRangeDirective(
976 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
977 StringRef FixedSizePortion);
979 virtual void emitCVDefRangeDirective(
980 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
981 codeview::DefRangeRegisterRelHeader DRHdr);
983 virtual void emitCVDefRangeDirective(
984 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
985 codeview::DefRangeSubfieldRegisterHeader DRHdr);
987 virtual void emitCVDefRangeDirective(
988 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
989 codeview::DefRangeRegisterHeader DRHdr);
991 virtual void emitCVDefRangeDirective(
992 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
993 codeview::DefRangeFramePointerRelHeader DRHdr);
995 virtual void emitCVDefRangeDirective(
996 ArrayRef<std::pair<const MCSymbol *, const MCSymbol *>> Ranges,
997 codeview::DefRangeRegisterRelIndirHeader DRHdr);
1015 virtual void emitAbsoluteSymbolDiff(
const MCSymbol *Hi,
const MCSymbol *Lo,
1019 virtual void emitAbsoluteSymbolDiffAsULEB128(
const MCSymbol *Hi,
1020 const MCSymbol *Lo);
1022 virtual MCSymbol *getDwarfLineTableSymbol(
unsigned CUID);
1023 virtual void emitCFISections(
bool EH,
bool Debug,
bool SFrame);
1024 void emitCFIStartProc(
bool IsSimple, SMLoc Loc = SMLoc());
1025 void emitCFIEndProc();
1026 virtual void emitCFIDefCfa(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1027 virtual void emitCFIDefCfaOffset(int64_t Offset, SMLoc Loc = {});
1028 virtual void emitCFIDefCfaRegister(int64_t
Register, SMLoc Loc = {});
1029 virtual void emitCFILLVMDefAspaceCfa(int64_t
Register, int64_t Offset,
1030 int64_t AddressSpace, SMLoc Loc = {});
1031 virtual void emitCFIOffset(int64_t
Register, int64_t Offset, SMLoc Loc = {});
1032 virtual void emitCFIPersonality(
const MCSymbol *Sym,
unsigned Encoding);
1033 virtual void emitCFILsda(
const MCSymbol *Sym,
unsigned Encoding);
1034 virtual void emitCFIRememberState(SMLoc Loc);
1035 virtual void emitCFIRestoreState(SMLoc Loc);
1036 virtual void emitCFISameValue(int64_t
Register, SMLoc Loc = {});
1037 virtual void emitCFIRestore(int64_t
Register, SMLoc Loc = {});
1038 virtual void emitCFIRelOffset(int64_t
Register, int64_t Offset, SMLoc Loc);
1039 virtual void emitCFIAdjustCfaOffset(int64_t Adjustment, SMLoc Loc = {});
1040 virtual void emitCFIEscape(StringRef Values, SMLoc Loc = {});
1041 virtual void emitCFIReturnColumn(int64_t
Register);
1042 virtual void emitCFIGnuArgsSize(int64_t
Size, SMLoc Loc = {});
1043 virtual void emitCFISignalFrame();
1044 virtual void emitCFIUndefined(int64_t
Register, SMLoc Loc = {});
1045 virtual void emitCFIRegister(int64_t Register1, int64_t Register2,
1047 virtual void emitCFIWindowSave(SMLoc Loc = {});
1048 virtual void emitCFINegateRAState(SMLoc Loc = {});
1049 virtual void emitCFILLVMRegisterPair(int64_t
Register, int64_t R1,
1050 int64_t R1SizeInBits, int64_t
R2,
1051 int64_t R2SizeInBits, SMLoc Loc = {});
1052 virtual void emitCFILLVMVectorRegisters(
1053 int64_t
Register, ArrayRef<MCCFIInstruction::VectorRegisterWithLane> VRs,
1055 virtual void emitCFILLVMVectorOffset(int64_t
Register,
1056 int64_t RegisterSizeInBits,
1057 int64_t MaskRegister,
1058 int64_t MaskRegisterSizeInBits,
1059 int64_t Offset, SMLoc Loc = {});
1061 emitCFILLVMVectorRegisterMask(int64_t
Register, int64_t SpillRegister,
1062 int64_t SpillRegisterLaneSizeInBits,
1063 int64_t MaskRegister,
1064 int64_t MaskRegisterSizeInBits, SMLoc Loc = {});
1066 virtual void emitCFINegateRAStateWithPC(SMLoc Loc = {});
1067 virtual void emitCFILLVMSetRAState(
unsigned State, MCSymbol *PACSym,
1069 virtual void emitCFILLVMSetRAState(
unsigned State, int64_t Offset,
1071 virtual void emitCFILabelDirective(SMLoc Loc, StringRef Name);
1072 virtual void emitCFIValOffset(int64_t
Register, int64_t Offset,
1075 virtual void emitWinCFIStartProc(
const MCSymbol *Symbol, SMLoc Loc = SMLoc());
1076 virtual void emitWinCFIEndProc(SMLoc Loc = SMLoc());
1081 virtual void emitWinCFIFuncletOrFuncEnd(SMLoc Loc = SMLoc());
1082 virtual void emitWinCFISplitChained(SMLoc Loc = SMLoc());
1083 virtual void emitWinCFIPushReg(MCRegister
Register, SMLoc Loc = SMLoc());
1084 virtual void emitWinCFIPush2Regs(MCRegister Reg1, MCRegister Reg2,
1085 SMLoc Loc = SMLoc());
1086 virtual void emitWinCFISetFrame(MCRegister
Register,
unsigned Offset,
1087 SMLoc Loc = SMLoc());
1088 virtual void emitWinCFIAllocStack(
unsigned Size, SMLoc Loc = SMLoc());
1089 virtual void emitWinCFISaveReg(MCRegister
Register,
unsigned Offset,
1090 SMLoc Loc = SMLoc());
1091 virtual void emitWinCFISaveXMM(MCRegister
Register,
unsigned Offset,
1092 SMLoc Loc = SMLoc());
1093 virtual void emitWinCFIPushFrame(
bool Code, SMLoc Loc = SMLoc());
1094 virtual void emitWinCFIEndProlog(SMLoc Loc = SMLoc());
1095 virtual void emitWinCFIBeginEpilogue(SMLoc Loc = SMLoc());
1096 virtual void emitWinCFIEndEpilogue(SMLoc Loc = SMLoc());
1097 virtual void emitWinCFIUnwindV2Start(SMLoc Loc = SMLoc());
1098 virtual void emitWinCFIUnwindVersion(uint8_t Version, SMLoc Loc = SMLoc());
1102 DefaultWinCFIUnwindVersion = V;
1105 return DefaultWinCFIUnwindVersion;
1107 virtual void emitWinEHHandler(
const MCSymbol *Sym,
bool Unwind,
bool Except,
1146 virtual void finishImpl();
1153 void maybeEmitDwarf64Mark();
1163 const Twine &Comment);
1166 virtual void emitDwarfLineStartLabel(
MCSymbol *StartSym);
1178 unsigned PointerSize) {}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static ManagedStatic< cl::opt< bool, true >, CreateDebug > Debug
This file defines the DenseMap class.
Promote Memory to Register
static constexpr StringLiteral Filename
Func getContext().diagnose(DiagnosticInfoUnsupported(Func
This file defines the SmallVector class.
Defines the llvm::VersionTuple class, which represents a version in the form major[....
Class for arbitrary precision integers.
virtual void emitUnwindRaw(int64_t StackOffset, const SmallVectorImpl< uint8_t > &Opcodes)
~ARMTargetStreamer() override
void emitTargetAttributes(const MCSubtargetInfo &STI)
Emit the build attributes that only depend on the hardware that we expect.
virtual void reset()
Reset any state between object emissions, i.e.
virtual void emitSetFP(MCRegister FpReg, MCRegister SpReg, int64_t Offset=0)
virtual void annotateTLSDescriptorSequence(const MCSymbolRefExpr *SRE)
virtual void finishAttributeSection()
ARMTargetStreamer(MCStreamer &S)
virtual void emitMovSP(MCRegister Reg, int64_t Offset=0)
virtual void emitARMWinCFISaveSP(unsigned Reg)
virtual void emitPersonalityIndex(unsigned Index)
virtual void emitInst(uint32_t Inst, char Suffix='\0')
virtual void emitARMWinCFISaveLR(unsigned Offset)
virtual void emitArchExtension(uint64_t ArchExt)
virtual void emitTextAttribute(unsigned Attribute, StringRef String)
virtual void emitARMWinCFIAllocStack(unsigned Size, bool Wide)
virtual void emitARMWinCFICustom(unsigned Opcode)
virtual void emitARMWinCFISaveRegMask(unsigned Mask, bool Wide)
virtual void emitRegSave(const SmallVectorImpl< MCRegister > &RegList, bool isVector)
virtual void emitARMWinCFIEpilogEnd()
virtual void emitARMWinCFIPrologEnd(bool Fragment)
virtual void switchVendor(StringRef Vendor)
virtual void emitCode16()
virtual void emitFnStart()
virtual void emitPersonality(const MCSymbol *Personality)
virtual void emitObjectArch(ARM::ArchKind Arch)
const MCExpr * addConstantPoolEntry(const MCExpr *, SMLoc Loc)
Callback used to implement the ldr= pseudo.
virtual void emitHandlerData()
virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, StringRef StringValue="")
virtual void emitThumbSet(MCSymbol *Symbol, const MCExpr *Value)
virtual void emitThumbFunc(MCSymbol *Symbol)
virtual void emitFPU(ARM::FPUKind FPU)
virtual void emitCantUnwind()
virtual void emitARMWinCFISaveFRegs(unsigned First, unsigned Last)
virtual void emitCode32()
virtual void emitSyntaxUnified()
virtual void emitARMWinCFIEpilogStart(unsigned Condition)
virtual void emitPad(int64_t Offset)
void emitCurrentConstantPool()
Callback used to implement the .ltorg directive.
virtual void emitAttribute(unsigned Attribute, unsigned Value)
virtual void emitARMWinCFINop(bool Wide)
void emitConstantPools() override
virtual void emitArch(ARM::ArchKind Arch)
Represent a constant reference to an array (0 or more elements consecutively in memory),...
Functions, function parameters, and return types can have attributes to indicate how they should be t...
Tagged union holding either a T or a Error.
Generic interface to target specific assembler backends.
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
This is an instance of a target assembly language printer that converts an MCInst to valid target ass...
Instances of this class represent a single low-level machine instruction.
Wrapper class representing physical registers. Should be passed by value.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Streaming machine code generation interface.
virtual void emitAddrsig()
virtual void addBlankLine()
Emit a blank line to a .s file to pretty it up.
virtual void visitUsedSymbol(const MCSymbol &Sym)
void setDefaultWinCFIUnwindVersion(uint8_t V)
Set the default unwind version for new WinCFI frames.
MCSectionSubPair getPreviousSection() const
Return the previous section that the streamer is emitting code to.
virtual void beginCOFFSymbolDef(const MCSymbol *Symbol)
Start emitting COFF symbol definition.
virtual void emitBinaryData(StringRef Data)
Functionally identical to EmitBytes.
std::unique_ptr< MCLFIRewriter > LFIRewriter
MCStreamer(const MCStreamer &)=delete
virtual void emitGNUAttribute(unsigned Tag, unsigned Value)
Emit a .gnu_attribute directive.
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.
unsigned getNumWinFrameInfos()
bool isWinCFIPrologEnded() const
Returns true if a WinCFI prolog has been completed (.seh_endprologue) in the current frame.
void setStartTokLocPtr(const SMLoc *Loc)
MCFragment * getCurrentFragment() const
virtual bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute)=0
Add the given Attribute to Symbol.
virtual void emitCOFFSymbolType(int Type)
Emit the type of the symbol.
uint8_t getDefaultWinCFIUnwindVersion() const
virtual void emitRelocDirective(const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc={})
Record a relocation described by the .reloc directive.
virtual void emitCOFFSymbolIndex(MCSymbol const *Symbol)
Emits the symbol table index of a Symbol into the current section.
virtual void emitCVStringTableDirective()
This implements the CodeView '.cv_stringtable' assembler directive.
virtual bool hasRawTextSupport() const
Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText.
SmallVector< MCDwarfFrameInfo, 0 > DwarfFrameInfos
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 & p...
virtual void emitTargetTriple(StringRef TargetTriple)
virtual bool isVerboseAsm() const
Return true if this streamer supports verbose assembly and if it is enabled.
virtual void emitCOFFImgRel32(MCSymbol const *Symbol, int64_t Offset)
Emits a COFF image relative relocation.
virtual void endCOFFSymbolDef()
Marks the end of the symbol definition.
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.
WinEH::FrameInfo::Epilog * getCurrentWinEpilog() const
virtual void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)=0
Emit a common symbol.
virtual MCAssembler * getAssemblerPtr()
virtual void emitXCOFFSymbolLinkageWithVisibility(MCSymbol *Symbol, MCSymbolAttr Linkage, MCSymbolAttr Visibility)
Emit a symbol's linkage and visibility with a linkage directive for XCOFF.
void setTargetStreamer(MCTargetStreamer *TS)
virtual bool isIntegratedAssemblerRequired() const
Is the integrated assembler required for this streamer to function correctly?
virtual void emitCFIStartProcImpl(MCDwarfFrameInfo &Frame)
virtual void emitCVFileChecksumOffsetDirective(unsigned FileNo)
This implements the CodeView '.cv_filechecksumoffset' assembler directive.
bool getUseAssemblerInfoForParsing()
virtual void emitCOFFSecNumber(MCSymbol const *Symbol)
Emits the physical number of the section containing the given symbol as assigned during object writin...
MCContext & getContext() const
SMLoc getStartTokLoc() const
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 AddComment(const Twine &T, bool EOL=true)
Add a textual comment.
virtual void emitCVFPOData(const MCSymbol *ProcSym, SMLoc Loc={})
This implements the CodeView '.cv_fpo_data' assembler directive.
virtual void emitELFSize(MCSymbol *Symbol, const MCExpr *Value)
Emit an ELF .size directive.
virtual void emitXCOFFLocalCommonSymbol(MCSymbol *LabelSym, uint64_t Size, MCSymbol *CsectSym, Align Alignment)
Emits an lcomm directive with XCOFF csect information.
virtual void emitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset)
Emits a COFF section relative relocation.
void emitValue(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
virtual void emitIdent(StringRef IdentString)
Emit the "identifiers" directive.
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...
virtual void emitCVFileChecksumsDirective()
This implements the CodeView '.cv_filechecksums' assembler directive.
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 ex...
virtual void emitCOFFSectionIndex(MCSymbol const *Symbol)
Emits a COFF section index.
void setAllowAutoPadding(bool v)
virtual void emitCOFFSecOffset(MCSymbol const *Symbol)
Emits the offset of the symbol from the beginning of the section during object writing (i....
MCTargetStreamer * getTargetStreamer()
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 & p...
MCStreamer(MCContext &Ctx)
virtual void emitDarwinTargetVariantBuildVersion(unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
virtual bool mayHaveInstructions(MCSection &Sec) const
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.
MCLFIRewriter * getLFIRewriter()
bool isInEpilogCFI() const
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 outp...
void emitInt16(uint64_t Value)
virtual void emitCFIEndProcImpl(MCDwarfFrameInfo &CurFrame)
virtual void emitSymbolDesc(MCSymbol *Symbol, unsigned DescValue)
Set the DescValue for the Symbol.
virtual void emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment)
Emit a local common (.lcomm) symbol.
size_t getCurFragSize() const
virtual void emitCOFFSafeSEH(MCSymbol const *Symbol)
virtual void emitXCOFFRenameDirective(const MCSymbol *Name, StringRef Rename)
Emit a XCOFF .rename directive which creates a synonym for an illegal or undesirable name.
void pushSection()
Save the current and previous section on the section stack.
void setUseAssemblerInfoForParsing(bool v)
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 emitDataRegion(MCDataRegionType Kind)
Note in the output the specified region Kind.
bool getAllowAutoPadding() const
virtual void emitLinkerOptions(ArrayRef< std::string > Kind)
Emit the given list Options of strings as linker options into the output.
void emitInt64(uint64_t Value)
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 sy...
void emitInt32(uint64_t Value)
ArrayRef< std::unique_ptr< WinEH::FrameInfo > > getWinFrameInfos() const
MCSectionSubPair getCurrentSection() const
Return the current section that the streamer is emitting code to.
virtual void emitELFSymverDirective(const MCSymbol *OriginalSym, StringRef Name, bool KeepOriginalSym)
Emit an ELF .symver directive.
virtual void emitXCOFFCInfoSym(StringRef Name, StringRef Metadata)
Emit a C_INFO symbol with XCOFF embedded metadata to the .info section.
MCSection * getCurrentSectionOnly() const
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.
MCStreamer & operator=(const MCStreamer &)=delete
virtual void emitDwarfLineEndEntry(MCSection *Section, MCSymbol *LastLabel, MCSymbol *EndLabel=nullptr)
Emit the debug line end entry.
virtual void emitLOHDirective(MCLOHType Kind, const MCLOHArgs &Args)
Emit a Linker Optimization Hint (LOH) directive.
void addFragment(MCFragment *F)
virtual void emitVersionMin(MCVersionMinType Type, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
Specify the Mach-O minimum deployment target version.
virtual void emitCOFFSymbolStorageClass(int StorageClass)
Emit the storage class of the symbol.
WinEH::FrameInfo * getCurrentWinFrameInfo()
void emitInt8(uint64_t Value)
virtual void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment=Align(1))
Emit a thread local bss (.tbss) symbol.
WinEH::FrameInfo::Epilog * CurrentWinEpilog
virtual void emitBytes(StringRef Data)
Emit the bytes in Data into the output.
virtual void emitAddrsigSym(const MCSymbol *Sym)
void visitUsedExpr(const MCExpr &Expr)
virtual void emitBuildVersion(unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
Emit/Specify Mach-O build version command.
virtual void changeSection(MCSection *, uint32_t)
This is called by popSection and switchSection, if the current section changes.
Generic base class for all target subtargets.
Represent a reference to a symbol from inside an expression.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Target specific streamer interface.
virtual ~MCTargetStreamer()
MCStreamer & getStreamer()
MCTargetStreamer(MCStreamer &S)
Represents a location in source code.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StackOffset holds a fixed and a scalable offset in bytes.
Represent a constant reference to a string, i.e.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
Represents a version number in the form major[.minor[.subminor[.build]]].
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI MCStreamer * createNullStreamer(MCContext &Ctx)
Create a dummy machine code streamer, which does nothing.
MCLOHDirective::LOHArgs MCLOHArgs
SmallVector< InlineSite, 8 > MCPseudoProbeInlineStack
@ First
Helpers to iterate all locations in the MemoryEffectsBase class.
void cantFail(Error Err, const char *Msg=nullptr)
Report a fatal error if Err is a failure value.
MCLOHType
Linker Optimization Hint Type.
RelativeUniformCounterPtr ValuesPtrExpr VTableAddr Count
std::pair< MCSection *, uint32_t > MCSectionSubPair
This struct is a compact representation of a valid (non-zero power of two) alignment.