LLVM  8.0.1
Public Member Functions | List of all members
llvm::MCELFStreamer Class Reference

#include "llvm/MC/MCELFStreamer.h"

Inheritance diagram for llvm::MCELFStreamer:
Inheritance graph
[legend]
Collaboration diagram for llvm::MCELFStreamer:
Collaboration graph
[legend]

Public Member Functions

 MCELFStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
 
 ~MCELFStreamer () override=default
 
void reset () override
 state management More...
 
- Public Member Functions inherited from llvm::MCObjectStreamer
void reset () override
 state management More...
 
bool isIntegratedAssemblerRequired () const override
 Object streamers require the integrated assembler. More...
 
void EmitFrames (MCAsmBackend *MAB)
 
void EmitCFISections (bool EH, bool Debug) override
 
MCFragmentgetCurrentFragment () const
 
void insert (MCFragment *F)
 
MCDataFragmentgetOrCreateDataFragment (const MCSubtargetInfo *STI=nullptr)
 Get a data fragment to write into, creating a new one if the current fragment is not a data fragment. More...
 
MCPaddingFragmentgetOrCreatePaddingFragment ()
 
void visitUsedSymbol (const MCSymbol &Sym) override
 
void flushPendingLabels ()
 Create a dummy fragment to assign any pending labels. More...
 
MCAssemblergetAssembler ()
 
MCAssemblergetAssemblerPtr () override
 
void EmitLabel (MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
 Emit a label for Symbol into the current section. More...
 
void EmitAssignment (MCSymbol *Symbol, const MCExpr *Value) override
 Emit an assignment of Value to Symbol. More...
 
void EmitValueImpl (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc()) override
 Emit the expression Value into the output as a native integer of the given Size bytes. More...
 
void EmitULEB128Value (const MCExpr *Value) override
 
void EmitSLEB128Value (const MCExpr *Value) override
 
void EmitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol) override
 Emit an weak reference from Alias to Symbol. More...
 
void ChangeSection (MCSection *Section, const MCExpr *Subsection) override
 Update streamer for a new active section. More...
 
void EmitInstruction (const MCInst &Inst, const MCSubtargetInfo &STI, bool=false) override
 Emit the given Instruction into the current section. More...
 
void EmitBundleAlignMode (unsigned AlignPow2) override
 Set the bundle alignment mode from now on in the section. More...
 
void EmitBundleLock (bool AlignToEnd) override
 The following instructions are a bundle-locked group. More...
 
void EmitBundleUnlock () override
 Ends a bundle-locked group. More...
 
void EmitBytes (StringRef Data) override
 Emit the bytes in Data into the output. More...
 
void EmitValueToAlignment (unsigned ByteAlignment, int64_t Value=0, unsigned ValueSize=1, unsigned MaxBytesToEmit=0) override
 Emit some number of copies of Value until the byte alignment ByteAlignment is reached. More...
 
void EmitCodeAlignment (unsigned ByteAlignment, unsigned MaxBytesToEmit=0) override
 Emit nops until the byte alignment ByteAlignment is reached. More...
 
void emitValueToOffset (const MCExpr *Offset, unsigned char Value, SMLoc Loc) override
 Emit some number of copies of Value until the byte offset Offset is reached. More...
 
void EmitCodePaddingBasicBlockStart (const MCCodePaddingContext &Context) override
 
void EmitCodePaddingBasicBlockEnd (const MCCodePaddingContext &Context) override
 
void EmitDwarfLocDirective (unsigned FileNo, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName) override
 This implements the DWARF2 '.loc fileno lineno ...' assembler directive. More...
 
void EmitDwarfAdvanceLineAddr (int64_t LineDelta, const MCSymbol *LastLabel, const MCSymbol *Label, unsigned PointerSize)
 
void EmitDwarfAdvanceFrameAddr (const MCSymbol *LastLabel, const MCSymbol *Label)
 
void EmitCVLocDirective (unsigned FunctionId, unsigned FileNo, unsigned Line, unsigned Column, bool PrologueEnd, bool IsStmt, StringRef FileName, SMLoc Loc) override
 This implements the CodeView '.cv_loc' assembler directive. More...
 
void EmitCVLinetableDirective (unsigned FunctionId, const MCSymbol *Begin, const MCSymbol *End) override
 This implements the CodeView '.cv_linetable' assembler directive. More...
 
void EmitCVInlineLinetableDirective (unsigned PrimaryFunctionId, unsigned SourceFileId, unsigned SourceLineNum, const MCSymbol *FnStartSym, const MCSymbol *FnEndSym) override
 This implements the CodeView '.cv_inline_linetable' assembler directive. More...
 
void EmitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol *>> Ranges, StringRef FixedSizePortion) override
 This implements the CodeView '.cv_def_range' assembler directive. More...
 
void EmitCVStringTableDirective () override
 This implements the CodeView '.cv_stringtable' assembler directive. More...
 
void EmitCVFileChecksumsDirective () override
 This implements the CodeView '.cv_filechecksums' assembler directive. More...
 
void EmitCVFileChecksumOffsetDirective (unsigned FileNo) override
 This implements the CodeView '.cv_filechecksumoffset' assembler directive. More...
 
void EmitDTPRel32Value (const MCExpr *Value) override
 Emit the expression Value into the output as a dtprel (32-bit DTP relative) value. More...
 
void EmitDTPRel64Value (const MCExpr *Value) override
 Emit the expression Value into the output as a dtprel (64-bit DTP relative) value. More...
 
void EmitTPRel32Value (const MCExpr *Value) override
 Emit the expression Value into the output as a tprel (32-bit TP relative) value. More...
 
void EmitTPRel64Value (const MCExpr *Value) override
 Emit the expression Value into the output as a tprel (64-bit TP relative) value. More...
 
void EmitGPRel32Value (const MCExpr *Value) override
 Emit the expression Value into the output as a gprel32 (32-bit GP relative) value. More...
 
void EmitGPRel64Value (const MCExpr *Value) override
 Emit the expression Value into the output as a gprel64 (64-bit GP relative) value. More...
 
bool EmitRelocDirective (const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc, const MCSubtargetInfo &STI) override
 Emit a .reloc directive. More...
 
void emitFill (const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc=SMLoc()) override
 Emit Size bytes worth of the value specified by FillValue. More...
 
void emitFill (const MCExpr &NumValues, int64_t Size, int64_t Expr, SMLoc Loc=SMLoc()) override
 Emit NumValues copies of Size bytes. More...
 
void EmitFileDirective (StringRef Filename) override
 Switch to a new logical file. More...
 
void EmitAddrsig () override
 
void EmitAddrsigSym (const MCSymbol *Sym) override
 
void FinishImpl () override
 Streamer specific finalization. More...
 
void emitAbsoluteSymbolDiff (const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size) override
 Emit the absolute difference between two symbols if possible. More...
 
void emitAbsoluteSymbolDiffAsULEB128 (const MCSymbol *Hi, const MCSymbol *Lo) override
 Emit the absolute difference between two symbols encoded with ULEB128. More...
 
bool mayHaveInstructions (MCSection &Sec) const override
 
- Public Member Functions inherited from llvm::MCStreamer
 MCStreamer (const MCStreamer &)=delete
 
MCStreameroperator= (const MCStreamer &)=delete
 
virtual ~MCStreamer ()
 
void visitUsedExpr (const MCExpr &Expr)
 
void setTargetStreamer (MCTargetStreamer *TS)
 
MCContextgetContext () const
 
void setUseAssemblerInfoForParsing (bool v)
 
bool getUseAssemblerInfoForParsing ()
 
MCTargetStreamergetTargetStreamer ()
 
WinEH::FrameInfoEnsureValidWinFrameInfo (SMLoc Loc)
 Retreive the current frame info if one is available and it is not yet closed. More...
 
unsigned getNumFrameInfos ()
 
ArrayRef< MCDwarfFrameInfogetDwarfFrameInfos () const
 
bool hasUnfinishedDwarfFrameInfo ()
 
unsigned getNumWinFrameInfos ()
 
ArrayRef< std::unique_ptr< WinEH::FrameInfo > > getWinFrameInfos () const
 
void generateCompactUnwindEncodings (MCAsmBackend *MAB)
 
unsigned EmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, MD5::MD5Result *Checksum=nullptr, Optional< StringRef > Source=None, unsigned CUID=0)
 Associate a filename with a specified logical file number. More...
 
virtual Expected< unsignedtryEmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, MD5::MD5Result *Checksum=nullptr, Optional< StringRef > Source=None, unsigned CUID=0)
 Associate a filename with a specified logical file number. More...
 
virtual void emitDwarfFile0Directive (StringRef Directory, StringRef Filename, MD5::MD5Result *Checksum, Optional< StringRef > Source, unsigned CUID=0)
 Specify the "root" file of the compilation, using the ".file 0" extension. More...
 
virtual void EmitCFIBKeyFrame ()
 
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. More...
 
virtual bool EmitCVFuncIdDirective (unsigned FunctionId)
 Introduces a function id for use with .cv_loc. More...
 
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. More...
 
virtual void EmitCVFPOData (const MCSymbol *ProcSym, SMLoc Loc={})
 This implements the CodeView '.cv_fpo_data' assembler directive. More...
 
virtual MCSymbolgetDwarfLineTableSymbol (unsigned CUID)
 
void EmitCFIStartProc (bool IsSimple, SMLoc Loc=SMLoc())
 
void EmitCFIEndProc ()
 
virtual void EmitCFIDefCfa (int64_t Register, int64_t Offset)
 
virtual void EmitCFIDefCfaOffset (int64_t Offset)
 
virtual void EmitCFIDefCfaRegister (int64_t Register)
 
virtual void EmitCFIOffset (int64_t Register, int64_t Offset)
 
virtual void EmitCFIPersonality (const MCSymbol *Sym, unsigned Encoding)
 
virtual void EmitCFILsda (const MCSymbol *Sym, unsigned Encoding)
 
virtual void EmitCFIRememberState ()
 
virtual void EmitCFIRestoreState ()
 
virtual void EmitCFISameValue (int64_t Register)
 
virtual void EmitCFIRestore (int64_t Register)
 
virtual void EmitCFIRelOffset (int64_t Register, int64_t Offset)
 
virtual void EmitCFIAdjustCfaOffset (int64_t Adjustment)
 
virtual void EmitCFIEscape (StringRef Values)
 
virtual void EmitCFIReturnColumn (int64_t Register)
 
virtual void EmitCFIGnuArgsSize (int64_t Size)
 
virtual void EmitCFISignalFrame ()
 
virtual void EmitCFIUndefined (int64_t Register)
 
virtual void EmitCFIRegister (int64_t Register1, int64_t Register2)
 
virtual void EmitCFIWindowSave ()
 
virtual void EmitCFINegateRAState ()
 
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. More...
 
virtual void EmitWinCFIStartChained (SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIEndChained (SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIPushReg (unsigned Register, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFISetFrame (unsigned Register, unsigned Offset, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIAllocStack (unsigned Size, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFISaveReg (unsigned Register, unsigned Offset, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFISaveXMM (unsigned Register, unsigned Offset, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIPushFrame (bool Code, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIEndProlog (SMLoc Loc=SMLoc())
 
virtual void EmitWinEHHandler (const MCSymbol *Sym, bool Unwind, bool Except, SMLoc Loc=SMLoc())
 
virtual void EmitWinEHHandlerData (SMLoc Loc=SMLoc())
 
MCSectiongetAssociatedPDataSection (const MCSection *TextSec)
 Get the .pdata section used for the given section. More...
 
MCSectiongetAssociatedXDataSection (const MCSection *TextSec)
 Get the .xdata section used for the given section. More...
 
virtual void EmitSyntaxDirective ()
 
void EmitRawText (const Twine &String)
 If this file is backed by a assembly streamer, this dumps the specified string in the output .s file. More...
 
void Finish ()
 Finish emission of machine code. More...
 
virtual bool isVerboseAsm () const
 Return true if this streamer supports verbose assembly and if it is enabled. More...
 
virtual bool hasRawTextSupport () const
 Return true if this asm streamer supports emitting unformatted text to the .s file with EmitRawText. More...
 
virtual void AddComment (const Twine &T, bool EOL=true)
 Add a textual comment. More...
 
virtual raw_ostreamGetCommentOS ()
 Return a raw_ostream that comments can be written to. More...
 
virtual void emitRawComment (const Twine &T, bool TabPrefix=true)
 Print T and prefix it with the comment string (normally #) and optionally a tab. More...
 
virtual void addExplicitComment (const Twine &T)
 Add explicit comment T. More...
 
virtual void emitExplicitComments ()
 Emit added explicit comments. More...
 
virtual void AddBlankLine ()
 AddBlankLine - Emit a blank line to a .s file to pretty it up. More...
 
MCSectionSubPair getCurrentSection () const
 Return the current section that the streamer is emitting code to. More...
 
MCSectiongetCurrentSectionOnly () const
 
MCSectionSubPair getPreviousSection () const
 Return the previous section that the streamer is emitting code to. More...
 
unsigned GetSymbolOrder (const MCSymbol *Sym) const
 Returns an index to represent the order a symbol was emitted in. More...
 
void PushSection ()
 Save the current and previous section on the section stack. More...
 
bool PopSection ()
 Restore the current and previous section from the section stack. More...
 
bool SubSection (const MCExpr *Subsection)
 
virtual void SwitchSection (MCSection *Section, const MCExpr *Subsection=nullptr)
 Set the current section where code is being emitted to Section. More...
 
void SwitchSectionNoChange (MCSection *Section, const MCExpr *Subsection=nullptr)
 Set the current section where code is being emitted to Section. More...
 
MCSymbolendSection (MCSection *Section)
 
void AssignFragment (MCSymbol *Symbol, MCFragment *Fragment)
 Sets the symbol's section. More...
 
virtual void EmitEHSymAttributes (const MCSymbol *Symbol, MCSymbol *EHSymbol)
 
virtual void EmitLinkerOptions (ArrayRef< std::string > Kind)
 Emit the given list Options of strings as linker options into the output. More...
 
virtual void EmitDataRegion (MCDataRegionType Kind)
 Note in the output the specified region Kind. More...
 
virtual void EmitVersionMin (MCVersionMinType Type, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
 Specify the Mach-O minimum deployment target version. More...
 
virtual void EmitBuildVersion (unsigned Platform, unsigned Major, unsigned Minor, unsigned Update, VersionTuple SDKVersion)
 Emit/Specify Mach-O build version command. More...
 
void EmitVersionForTarget (const Triple &Target, const VersionTuple &SDKVersion)
 
virtual void BeginCOFFSymbolDef (const MCSymbol *Symbol)
 Start emitting COFF symbol definition. More...
 
virtual void EmitCOFFSymbolStorageClass (int StorageClass)
 Emit the storage class of the symbol. More...
 
virtual void EmitCOFFSymbolType (int Type)
 Emit the type of the symbol. More...
 
virtual void EndCOFFSymbolDef ()
 Marks the end of the symbol definition. More...
 
virtual void EmitCOFFSafeSEH (MCSymbol const *Symbol)
 
virtual void EmitCOFFSymbolIndex (MCSymbol const *Symbol)
 Emits the symbol table index of a Symbol into the current section. More...
 
virtual void EmitCOFFSectionIndex (MCSymbol const *Symbol)
 Emits a COFF section index. More...
 
virtual void EmitCOFFSecRel32 (MCSymbol const *Symbol, uint64_t Offset)
 Emits a COFF section relative relocation. More...
 
virtual void EmitCOFFImgRel32 (MCSymbol const *Symbol, int64_t Offset)
 Emits a COFF image relative relocation. More...
 
virtual void EmitLOHDirective (MCLOHType Kind, const MCLOHArgs &Args)
 Emit a Linker Optimization Hint (LOH) directive. More...
 
virtual void EmitBinaryData (StringRef Data)
 Functionally identical to EmitBytes. More...
 
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. More...
 
void EmitULEB128IntValue (uint64_t Value)
 Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers. More...
 
void EmitSLEB128IntValue (int64_t Value)
 Special case of EmitSLEB128Value that avoids the client having to pass in a MCExpr for constant integers. More...
 
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. More...
 
void emitFill (uint64_t NumBytes, uint8_t FillValue)
 Emit NumBytes bytes worth of the value specified by FillValue. More...
 
void EmitZeros (uint64_t NumBytes)
 Emit NumBytes worth of zeros. More...
 

MCStreamer Interface

void InitSections (bool NoExecStack) override
 Create the default sections and set the initial one. More...
 
void ChangeSection (MCSection *Section, const MCExpr *Subsection) override
 Update streamer for a new active section. More...
 
void EmitLabel (MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
 Emit a label for Symbol into the current section. More...
 
void EmitLabel (MCSymbol *Symbol, SMLoc Loc, MCFragment *F) override
 
void EmitAssemblerFlag (MCAssemblerFlag Flag) override
 Note in the output the specified Flag. More...
 
void EmitThumbFunc (MCSymbol *Func) override
 Note in the output that the specified Func is a Thumb mode function (ARM target only). More...
 
void EmitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol) override
 Emit an weak reference from Alias to Symbol. More...
 
bool EmitSymbolAttribute (MCSymbol *Symbol, MCSymbolAttr Attribute) override
 Add the given Attribute to Symbol. More...
 
void EmitSymbolDesc (MCSymbol *Symbol, unsigned DescValue) override
 Set the DescValue for the Symbol. More...
 
void EmitCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) override
 Emit a common symbol. More...
 
void emitELFSize (MCSymbol *Symbol, const MCExpr *Value) override
 Emit an ELF .size directive. More...
 
void emitELFSymverDirective (StringRef AliasName, const MCSymbol *Aliasee) override
 Emit an ELF .symver directive. More...
 
void EmitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) override
 Emit a local common (.lcomm) symbol. More...
 
void EmitZerofill (MCSection *Section, MCSymbol *Symbol=nullptr, uint64_t Size=0, unsigned ByteAlignment=0, SMLoc L=SMLoc()) override
 Emit the zerofill section and an optional symbol. More...
 
void EmitTBSSSymbol (MCSection *Section, MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment=0) override
 Emit a thread local bss (.tbss) symbol. More...
 
void EmitValueImpl (const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc()) override
 Emit the expression Value into the output as a native integer of the given Size bytes. More...
 
void EmitIdent (StringRef IdentString) override
 Emit the "identifiers" directive. More...
 
void EmitValueToAlignment (unsigned, int64_t, unsigned, unsigned) override
 Emit some number of copies of Value until the byte alignment ByteAlignment is reached. More...
 
void emitCGProfileEntry (const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count) override
 
void FinishImpl () override
 Streamer specific finalization. More...
 
void EmitBundleAlignMode (unsigned AlignPow2) override
 Set the bundle alignment mode from now on in the section. More...
 
void EmitBundleLock (bool AlignToEnd) override
 The following instructions are a bundle-locked group. More...
 
void EmitBundleUnlock () override
 Ends a bundle-locked group. More...
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::MCObjectStreamer
 MCObjectStreamer (MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
 
 ~MCObjectStreamer ()
 
bool changeSectionImpl (MCSection *Section, const MCExpr *Subsection)
 
void flushPendingLabels (MCFragment *F, uint64_t FOffset=0)
 If any labels have been emitted but not assigned fragments, ensure that they get assigned, either to F if possible or to a new data fragment. More...
 
- Protected Member Functions inherited from llvm::MCStreamer
 MCStreamer (MCContext &Ctx)
 
WinEH::FrameInfogetCurrentWinFrameInfo ()
 
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. More...
 
bool checkCVLocSection (unsigned FuncId, unsigned FileNo, SMLoc Loc)
 Returns true if the the .cv_loc directive is in the right section. More...
 

Detailed Description

Definition at line 24 of file MCELFStreamer.h.

Constructor & Destructor Documentation

◆ MCELFStreamer()

MCELFStreamer::MCELFStreamer ( MCContext Context,
std::unique_ptr< MCAsmBackend TAB,
std::unique_ptr< MCObjectWriter OW,
std::unique_ptr< MCCodeEmitter Emitter 
)

◆ ~MCELFStreamer()

llvm::MCELFStreamer::~MCELFStreamer ( )
overridedefault

Member Function Documentation

◆ ChangeSection()

void MCELFStreamer::ChangeSection ( MCSection ,
const MCExpr  
)
overridevirtual

◆ EmitAssemblerFlag()

void MCELFStreamer::EmitAssemblerFlag ( MCAssemblerFlag  Flag)
overridevirtual

◆ EmitBundleAlignMode()

void MCELFStreamer::EmitBundleAlignMode ( unsigned  AlignPow2)
overridevirtual

Set the bundle alignment mode from now on in the section.

The argument is the power of 2 to which the alignment is set. The value 0 means turn the bundle alignment off.

Reimplemented from llvm::MCStreamer.

Definition at line 601 of file MCELFStreamer.cpp.

References assert(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::getBundleAlignSize(), llvm::report_fatal_error(), and llvm::MCAssembler::setBundleAlignSize().

Referenced by reset().

◆ EmitBundleLock()

void MCELFStreamer::EmitBundleLock ( bool  AlignToEnd)
overridevirtual

The following instructions are a bundle-locked group.

Parameters
AlignToEnd- If true, the bundle-locked group will be aligned to the end of a bundle.

Reimplemented from llvm::MCStreamer.

Definition at line 611 of file MCELFStreamer.cpp.

References llvm::MCSection::BundleLocked, llvm::MCSection::BundleLockedAlignToEnd, llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::report_fatal_error(), llvm::MCSection::setBundleGroupBeforeFirstInst(), and llvm::MCSection::setBundleLockState().

Referenced by reset().

◆ EmitBundleUnlock()

void MCELFStreamer::EmitBundleUnlock ( )
overridevirtual

◆ emitCGProfileEntry()

void MCELFStreamer::emitCGProfileEntry ( const MCSymbolRefExpr From,
const MCSymbolRefExpr To,
uint64_t  Count 
)
overridevirtual

Reimplemented from llvm::MCStreamer.

Definition at line 359 of file MCELFStreamer.cpp.

References llvm::MCAssembler::CGProfile, From, and llvm::MCObjectStreamer::getAssembler().

Referenced by reset().

◆ EmitCommonSymbol()

void MCELFStreamer::EmitCommonSymbol ( MCSymbol Symbol,
uint64_t  Size,
unsigned  ByteAlignment 
)
overridevirtual

◆ emitELFSize()

void MCELFStreamer::emitELFSize ( MCSymbol Symbol,
const MCExpr Value 
)
overridevirtual

Emit an ELF .size directive.

This corresponds to an assembler statement such as: .size symbol, expression

Reimplemented from llvm::MCStreamer.

Definition at line 322 of file MCELFStreamer.cpp.

References llvm::ARMBuildAttrs::Symbol.

Referenced by reset().

◆ emitELFSymverDirective()

void MCELFStreamer::emitELFSymverDirective ( StringRef  AliasName,
const MCSymbol Aliasee 
)
overridevirtual

Emit an ELF .symver directive.

This corresponds to an assembler statement such as: .symver _start, foo@SOME_VERSION

Parameters
AliasName- The versioned alias (i.e. "foo@@SOME_VERSION")
Aliasee- The aliased symbol (i.e. "_start")

Reimplemented from llvm::MCStreamer.

Definition at line 326 of file MCELFStreamer.cpp.

References llvm::MCObjectStreamer::getAssembler(), and llvm::MCAssembler::Symvers.

Referenced by reset().

◆ EmitIdent()

void MCELFStreamer::EmitIdent ( StringRef  IdentString)
overridevirtual

Emit the "identifiers" directive.

This implements the '.ident "version foo"' assembler directive.

Reimplemented from llvm::MCStreamer.

Definition at line 365 of file MCELFStreamer.cpp.

References llvm::MCExpr::Binary, llvm::MCExpr::Constant, llvm::MCSymbolRefExpr::create(), E, llvm::MCObjectStreamer::EmitBytes(), llvm::MCObjectStreamer::EmitInstToFragment(), llvm::MCStreamer::EmitIntValue(), F(), llvm::MCObjectStreamer::getAssembler(), llvm::MCSection::getBeginSymbol(), llvm::MCStreamer::getContext(), llvm::MCAssembler::getContext(), llvm::MCObjectStreamer::getCurrentFragment(), llvm::MCContext::getELFSection(), llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::getFixups(), llvm::MCExpr::getKind(), llvm::MCSymbolRefExpr::getKind(), llvm::MCBinaryExpr::getLHS(), llvm::MCExpr::getLoc(), llvm::MCSymbol::getName(), llvm::MCBinaryExpr::getRHS(), llvm::MCSymbol::getSection(), llvm::MCSymbolRefExpr::getSymbol(), llvm::MCSymbol::isInSection(), llvm::MCSymbol::isTemporary(), llvm::MCStreamer::PopSection(), llvm::MCStreamer::PushSection(), llvm::MCAssembler::registerSymbol(), llvm::MCContext::reportError(), llvm::MCSymbol::setUsedInReloc(), llvm::ELF::SHF_MERGE, llvm::ELF::SHF_STRINGS, llvm::ELF::SHT_PROGBITS, llvm::ELF::STB_WEAK, llvm::ELF::STT_TLS, llvm::MCStreamer::SwitchSection(), llvm::MCExpr::SymbolRef, llvm::MCExpr::Target, llvm::MCExpr::Unary, llvm::MCSymbolRefExpr::VK_DTPOFF, llvm::MCSymbolRefExpr::VK_DTPREL, llvm::MCSymbolRefExpr::VK_GOTNTPOFF, llvm::MCSymbolRefExpr::VK_GOTTPOFF, llvm::MCSymbolRefExpr::VK_INDNTPOFF, llvm::MCSymbolRefExpr::VK_NTPOFF, llvm::MCSymbolRefExpr::VK_PPC_DTPMOD, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HA, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HI, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGH, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGHA, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGHER, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGHERA, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGHEST, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_HIGHESTA, llvm::MCSymbolRefExpr::VK_PPC_DTPREL_LO, llvm::MCSymbolRefExpr::VK_PPC_GOT_DTPREL, llvm::MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HA, llvm::MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HI, llvm::MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSGD, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSLD, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI, llvm::MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO, llvm::MCSymbolRefExpr::VK_PPC_GOT_TPREL, llvm::MCSymbolRefExpr::VK_PPC_GOT_TPREL_HA, llvm::MCSymbolRefExpr::VK_PPC_GOT_TPREL_HI, llvm::MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO, llvm::MCSymbolRefExpr::VK_PPC_TLS, llvm::MCSymbolRefExpr::VK_PPC_TLSGD, llvm::MCSymbolRefExpr::VK_PPC_TLSLD, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HA, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HI, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGH, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGHA, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGHER, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGHERA, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGHEST, llvm::MCSymbolRefExpr::VK_PPC_TPREL_HIGHESTA, llvm::MCSymbolRefExpr::VK_PPC_TPREL_LO, llvm::MCSymbolRefExpr::VK_TLSGD, llvm::MCSymbolRefExpr::VK_TLSLD, llvm::MCSymbolRefExpr::VK_TLSLDM, llvm::MCSymbolRefExpr::VK_TPOFF, and llvm::MCSymbolRefExpr::VK_TPREL.

Referenced by reset().

◆ EmitLabel() [1/2]

void MCELFStreamer::EmitLabel ( MCSymbol Symbol,
SMLoc  Loc = SMLoc() 
)
overridevirtual

Emit a label for Symbol into the current section.

This corresponds to an assembler statement such as: foo:

Parameters
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 from llvm::MCStreamer.

Reimplemented in llvm::MipsELFStreamer.

Definition at line 100 of file MCELFStreamer.cpp.

References llvm::MCObjectStreamer::EmitLabel(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCSectionELF::getFlags(), llvm::ARMBuildAttrs::Section, llvm::ELF::SHF_TLS, llvm::ELF::STT_TLS, and llvm::ARMBuildAttrs::Symbol.

Referenced by llvm::MipsELFStreamer::EmitCFIEndProcImpl(), llvm::MipsELFStreamer::EmitCFILabel(), llvm::MipsELFStreamer::EmitCFIStartProcImpl(), EmitCommonSymbol(), llvm::AMDGPUTargetELFStreamer::EmitHSAMetadata(), llvm::AMDGPUTargetELFStreamer::EmitISAVersion(), llvm::MipsELFStreamer::EmitLabel(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and reset().

◆ EmitLabel() [2/2]

void MCELFStreamer::EmitLabel ( MCSymbol Symbol,
SMLoc  Loc,
MCFragment F 
)
overridevirtual

◆ EmitLocalCommonSymbol()

void MCELFStreamer::EmitLocalCommonSymbol ( MCSymbol Symbol,
uint64_t  Size,
unsigned  ByteAlignment 
)
overridevirtual

Emit a local common (.lcomm) symbol.

Parameters
Symbol- The common symbol to emit.
Size- The size of the common symbol.
ByteAlignment- The alignment of the common symbol in bytes.

Reimplemented from llvm::MCStreamer.

Definition at line 331 of file MCELFStreamer.cpp.

References EmitCommonSymbol(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::registerSymbol(), llvm::ELF::STB_LOCAL, and llvm::ARMBuildAttrs::Symbol.

Referenced by reset().

◆ EmitSymbolAttribute()

bool MCELFStreamer::EmitSymbolAttribute ( MCSymbol Symbol,
MCSymbolAttr  Attribute 
)
overridevirtual

◆ EmitSymbolDesc()

void MCELFStreamer::EmitSymbolDesc ( MCSymbol Symbol,
unsigned  DescValue 
)
overridevirtual

Set the DescValue for the Symbol.

Parameters
Symbol- The symbol to have its n_desc field set.
DescValue- The value to set into the n_desc field.

Reimplemented from llvm::MCStreamer.

Definition at line 681 of file MCELFStreamer.cpp.

References llvm_unreachable.

Referenced by reset().

◆ EmitTBSSSymbol()

void MCELFStreamer::EmitTBSSSymbol ( MCSection Section,
MCSymbol Symbol,
uint64_t  Size,
unsigned  ByteAlignment = 0 
)
overridevirtual

Emit a thread local bss (.tbss) symbol.

Parameters
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 if non-zero. This must be a power of 2 on some targets.

Reimplemented from llvm::MCStreamer.

Definition at line 691 of file MCELFStreamer.cpp.

References llvm_unreachable.

Referenced by reset().

◆ EmitThumbFunc()

void MCELFStreamer::EmitThumbFunc ( MCSymbol Func)
overridevirtual

Note in the output that the specified Func is a Thumb mode function (ARM target only).

Reimplemented from llvm::MCStreamer.

Definition at line 677 of file MCELFStreamer.cpp.

References llvm_unreachable.

Referenced by reset().

◆ EmitValueImpl()

void MCELFStreamer::EmitValueImpl ( const MCExpr Value,
unsigned  Size,
SMLoc  Loc = SMLoc() 
)
overridevirtual

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.

Parameters
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 from llvm::MCStreamer.

Reimplemented in llvm::MipsELFStreamer.

Definition at line 341 of file MCELFStreamer.cpp.

References llvm::MCObjectStreamer::EmitValueImpl(), and llvm::report_fatal_error().

Referenced by llvm::MipsELFStreamer::EmitValueImpl(), GetAEABIUnwindPersonalityName(), and reset().

◆ EmitValueToAlignment()

void MCELFStreamer::EmitValueToAlignment ( unsigned  ByteAlignment,
int64_t  Value,
unsigned  ValueSize,
unsigned  MaxBytesToEmit 
)
overridevirtual

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.

Parameters
ByteAlignment- The alignment to reach. This must be a power of two on some targets.
Value- The value to use when filling bytes.
ValueSize- 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 from llvm::MCStreamer.

Definition at line 349 of file MCELFStreamer.cpp.

References llvm::MCObjectStreamer::EmitValueToAlignment(), and llvm::report_fatal_error().

Referenced by EmitCommonSymbol(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and reset().

◆ EmitWeakReference()

void MCELFStreamer::EmitWeakReference ( MCSymbol Alias,
const MCSymbol Symbol 
)
overridevirtual

Emit an weak reference from Alias to Symbol.

This corresponds to an assembler statement such as: .weakref alias, symbol

Parameters
Alias- The alias that is being created.
Symbol- The symbol being aliased.

Reimplemented from llvm::MCStreamer.

Definition at line 164 of file MCELFStreamer.cpp.

References llvm::MCSymbolRefExpr::create(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getContext(), llvm::MCAssembler::registerSymbol(), llvm::MCSymbol::setVariableValue(), and llvm::MCSymbolRefExpr::VK_WEAKREF.

Referenced by reset().

◆ EmitZerofill()

void MCELFStreamer::EmitZerofill ( MCSection Section,
MCSymbol Symbol = nullptr,
uint64_t  Size = 0,
unsigned  ByteAlignment = 0,
SMLoc  Loc = SMLoc() 
)
overridevirtual

Emit the zerofill section and an optional symbol.

Parameters
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 if non-zero. This must be a power of 2 on some targets.

Implements llvm::MCStreamer.

Definition at line 685 of file MCELFStreamer.cpp.

References llvm_unreachable.

Referenced by reset().

◆ FinishImpl()

void MCELFStreamer::FinishImpl ( )
overridevirtual

◆ InitSections()

void MCELFStreamer::InitSections ( bool  NoExecStack)
overridevirtual

◆ reset()

void llvm::MCELFStreamer::reset ( )
inlineoverridevirtual

The documentation for this class was generated from the following files: