LLVM  6.0.0svn
Public Types | Public Member Functions | List of all members
llvm::RecordStreamer Class Reference

#include "Object/RecordStreamer.h"

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

Public Types

enum  State {
  NeverSeen, Global, Defined, DefinedGlobal,
  DefinedWeak, Used, UndefinedWeak
}
 
using const_iterator = StringMap< State >::const_iterator
 

Public Member Functions

 RecordStreamer (MCContext &Context)
 
const_iterator begin ()
 
const_iterator end ()
 
void EmitInstruction (const MCInst &Inst, const MCSubtargetInfo &STI, bool) override
 Emit the given Instruction into the current section. More...
 
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...
 
bool EmitSymbolAttribute (MCSymbol *Symbol, MCSymbolAttr Attribute) override
 Add the given Attribute to Symbol. More...
 
void EmitZerofill (MCSection *Section, MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) override
 Emit the zerofill section and an optional symbol. More...
 
void EmitCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment) override
 Emit a common symbol. More...
 
void emitELFSymverDirective (MCSymbol *Alias, const MCSymbol *Aliasee) override
 Record .symver aliases for later processing. More...
 
DenseMap< const MCSymbol *, std::vector< MCSymbol * > > & symverAliases ()
 Return the map of .symver aliasee to associated aliases. More...
 
State getSymbolState (const MCSymbol *Sym)
 Get the state recorded for the given symbol. More...
 
- 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)
 
virtual void reset ()
 State management. More...
 
MCContextgetContext () const
 
MCTargetStreamergetTargetStreamer ()
 
unsigned getNumFrameInfos ()
 
ArrayRef< MCDwarfFrameInfogetDwarfFrameInfos () const
 
bool hasUnfinishedDwarfFrameInfo ()
 
unsigned getNumWinFrameInfos ()
 
ArrayRef< std::unique_ptr< WinEH::FrameInfo > > getWinFrameInfos () const
 
void generateCompactUnwindEncodings (MCAsmBackend *MAB)
 
virtual void EmitFileDirective (StringRef Filename)
 Switch to a new logical file. More...
 
virtual void EmitIdent (StringRef IdentString)
 Emit the "identifiers" directive. More...
 
virtual unsigned EmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, unsigned CUID=0)
 Associate a filename with a specified logical file number. More...
 
virtual void EmitDwarfLocDirective (unsigned FileNo, unsigned Line, unsigned Column, unsigned Flags, unsigned Isa, unsigned Discriminator, StringRef FileName)
 This implements the DWARF2 '.loc fileno lineno ...' assembler directive. More...
 
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 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. More...
 
virtual void EmitCVLinetableDirective (unsigned FunctionId, const MCSymbol *FnStart, const MCSymbol *FnEnd)
 This implements the CodeView '.cv_linetable' assembler directive. More...
 
virtual void EmitCVInlineLinetableDirective (unsigned PrimaryFunctionId, unsigned SourceFileId, unsigned SourceLineNum, const MCSymbol *FnStartSym, const MCSymbol *FnEndSym)
 This implements the CodeView '.cv_inline_linetable' assembler directive. More...
 
virtual void EmitCVDefRangeDirective (ArrayRef< std::pair< const MCSymbol *, const MCSymbol *>> Ranges, StringRef FixedSizePortion)
 This implements the CodeView '.cv_def_range' assembler directive. More...
 
virtual void EmitCVStringTableDirective ()
 This implements the CodeView '.cv_stringtable' assembler directive. More...
 
virtual void EmitCVFileChecksumsDirective ()
 This implements the CodeView '.cv_filechecksums' assembler directive. More...
 
virtual void EmitCVFileChecksumOffsetDirective (unsigned FileNo)
 This implements the CodeView '.cv_filechecksumoffset' assembler directive. More...
 
virtual void EmitCVFPOData (const MCSymbol *ProcSym, SMLoc Loc={})
 This implements the CodeView '.cv_fpo_data' assembler directive. More...
 
virtual void emitAbsoluteSymbolDiff (const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size)
 Emit the absolute difference between two symbols. More...
 
virtual MCSymbolgetDwarfLineTableSymbol (unsigned CUID)
 
virtual void EmitCFISections (bool EH, bool Debug)
 
void EmitCFIStartProc (bool IsSimple)
 
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 EmitWinCFIStartProc (const MCSymbol *Symbol, SMLoc Loc=SMLoc())
 
virtual void EmitWinCFIEndProc (SMLoc Loc=SMLoc())
 
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 ()
 
virtual bool EmitRelocDirective (const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc)
 Emit a .reloc directive. More...
 
virtual void EmitBundleAlignMode (unsigned AlignPow2)
 Set the bundle alignment mode from now on in the section. More...
 
virtual void EmitBundleLock (bool AlignToEnd)
 The following instructions are a bundle-locked group. More...
 
virtual void EmitBundleUnlock ()
 Ends a bundle-locked group. More...
 
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...
 
virtual void FinishImpl ()
 Streamer specific finalization. More...
 
void Finish ()
 Finish emission of machine code. More...
 
virtual bool mayHaveInstructions (MCSection &Sec) const
 
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 bool isIntegratedAssemblerRequired () const
 Is the integrated assembler required for this streamer to function correctly? 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...
 
virtual void ChangeSection (MCSection *, const MCExpr *)
 Update streamer for a new active section. 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...
 
virtual void InitSections (bool NoExecStack)
 Create the default sections and set the initial one. 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 EmitAssemblerFlag (MCAssemblerFlag Flag)
 Note in the output the specified Flag. More...
 
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, unsigned Major, unsigned Minor, unsigned Update)
 Specify the MachO minimum deployment target version. More...
 
virtual void EmitThumbFunc (MCSymbol *Func)
 Note in the output that the specified Func is a Thumb mode function (ARM target only). More...
 
virtual void EmitWeakReference (MCSymbol *Alias, const MCSymbol *Symbol)
 Emit an weak reference from Alias to Symbol. More...
 
virtual void EmitSymbolDesc (MCSymbol *Symbol, unsigned DescValue)
 Set the DescValue for the Symbol. More...
 
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 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 emitELFSize (MCSymbol *Symbol, const MCExpr *Value)
 Emit an ELF .size directive. More...
 
virtual void EmitLOHDirective (MCLOHType Kind, const MCLOHArgs &Args)
 Emit a Linker Optimization Hint (LOH) directive. More...
 
virtual void EmitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment)
 Emit a local common (.lcomm) symbol. More...
 
virtual void EmitTBSSSymbol (MCSection *Section, MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment=0)
 Emit a thread local bss (.tbss) symbol. More...
 
virtual void EmitBytes (StringRef Data)
 Emit the bytes in Data into the output. More...
 
virtual void EmitBinaryData (StringRef Data)
 Functionally identical to EmitBytes. More...
 
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. 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...
 
virtual void EmitULEB128Value (const MCExpr *Value)
 
virtual void EmitSLEB128Value (const MCExpr *Value)
 
void EmitULEB128IntValue (uint64_t Value)
 Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integers. More...
 
void EmitPaddedULEB128IntValue (uint64_t Value, unsigned PadTo)
 Like EmitULEB128Value but pads the output to specific number of bytes. 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...
 
virtual void EmitDTPRel64Value (const MCExpr *Value)
 Emit the expression Value into the output as a dtprel (64-bit DTP relative) value. More...
 
virtual void EmitDTPRel32Value (const MCExpr *Value)
 Emit the expression Value into the output as a dtprel (32-bit DTP relative) value. More...
 
virtual void EmitTPRel64Value (const MCExpr *Value)
 Emit the expression Value into the output as a tprel (64-bit TP relative) value. More...
 
virtual void EmitTPRel32Value (const MCExpr *Value)
 Emit the expression Value into the output as a tprel (32-bit TP relative) value. More...
 
virtual void EmitGPRel64Value (const MCExpr *Value)
 Emit the expression Value into the output as a gprel64 (64-bit GP relative) value. More...
 
virtual void EmitGPRel32Value (const MCExpr *Value)
 Emit the expression Value into the output as a gprel32 (32-bit GP relative) value. More...
 
virtual void emitFill (uint64_t NumBytes, uint8_t FillValue)
 Emit NumBytes bytes worth of the value specified by FillValue. More...
 
virtual void emitFill (const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc=SMLoc())
 Emit Size bytes worth of the value specified by FillValue. More...
 
virtual void emitFill (uint64_t NumValues, int64_t Size, int64_t Expr)
 Emit NumValues copies of Size bytes. More...
 
virtual void emitFill (const MCExpr &NumValues, int64_t Size, int64_t Expr, SMLoc Loc=SMLoc())
 
void EmitZeros (uint64_t NumBytes)
 Emit NumBytes worth of zeros. More...
 
virtual void EmitValueToAlignment (unsigned ByteAlignment, int64_t Value=0, unsigned ValueSize=1, unsigned MaxBytesToEmit=0)
 Emit some number of copies of Value until the byte alignment ByteAlignment is reached. More...
 
virtual void EmitCodeAlignment (unsigned ByteAlignment, unsigned MaxBytesToEmit=0)
 Emit nops until the byte alignment ByteAlignment is reached. More...
 
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. More...
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::MCStreamer
 MCStreamer (MCContext &Ctx)
 
virtual void EmitCFIStartProcImpl (MCDwarfFrameInfo &Frame)
 
virtual void EmitCFIEndProcImpl (MCDwarfFrameInfo &CurFrame)
 
virtual MCSymbolEmitCFILabel ()
 When emitting an object file, create and emit a real label. More...
 
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...
 

Detailed Description

Definition at line 23 of file RecordStreamer.h.

Member Typedef Documentation

◆ const_iterator

Definition at line 43 of file RecordStreamer.h.

Member Enumeration Documentation

◆ State

Enumerator
NeverSeen 
Global 
Defined 
DefinedGlobal 
DefinedWeak 
Used 
UndefinedWeak 

Definition at line 25 of file RecordStreamer.h.

Constructor & Destructor Documentation

◆ RecordStreamer()

RecordStreamer::RecordStreamer ( MCContext Context)

Definition at line 73 of file RecordStreamer.cpp.

Member Function Documentation

◆ begin()

RecordStreamer::const_iterator RecordStreamer::begin ( )

◆ EmitAssignment()

void RecordStreamer::EmitAssignment ( MCSymbol Symbol,
const MCExpr Value 
)
overridevirtual

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.

Parameters
Symbol- The symbol being assigned to.
Value- The value for the symbol.

Reimplemented from llvm::MCStreamer.

Definition at line 91 of file RecordStreamer.cpp.

References llvm::MCStreamer::EmitAssignment().

◆ EmitCommonSymbol()

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

Emit a common symbol.

Parameters
Symbol- The common symbol to emit.
Size- The size of the common symbol.
ByteAlignment- The alignment of the symbol if non-zero. This must be a power of 2.

Implements llvm::MCStreamer.

Definition at line 110 of file RecordStreamer.cpp.

◆ emitELFSymverDirective()

void RecordStreamer::emitELFSymverDirective ( MCSymbol Alias,
const MCSymbol Aliasee 
)
overridevirtual

Record .symver aliases for later processing.

Reimplemented from llvm::MCStreamer.

Definition at line 115 of file RecordStreamer.cpp.

◆ EmitInstruction()

void RecordStreamer::EmitInstruction ( const MCInst Inst,
const MCSubtargetInfo STI,
bool  PrintSchedInfo 
)
overridevirtual

Emit the given Instruction into the current section.

PrintSchedInfo == true then schedul comment should be added to output

Reimplemented from llvm::MCStreamer.

Definition at line 81 of file RecordStreamer.cpp.

References llvm::MCStreamer::EmitInstruction().

◆ EmitLabel()

void RecordStreamer::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.

Definition at line 86 of file RecordStreamer.cpp.

References llvm::MCStreamer::EmitLabel().

◆ EmitSymbolAttribute()

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

Add the given Attribute to Symbol.

Implements llvm::MCStreamer.

Definition at line 96 of file RecordStreamer.cpp.

References llvm::MCSA_Global, llvm::MCSA_LazyReference, and llvm::MCSA_Weak.

Referenced by handleSymverAliases().

◆ EmitZerofill()

void RecordStreamer::EmitZerofill ( MCSection Section,
MCSymbol Symbol,
uint64_t  Size,
unsigned  ByteAlignment 
)
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 105 of file RecordStreamer.cpp.

◆ end()

RecordStreamer::const_iterator RecordStreamer::end ( )

Definition at line 79 of file RecordStreamer.cpp.

References llvm::StringMap< ValueTy, AllocatorTy >::end().

◆ getSymbolState()

State llvm::RecordStreamer::getSymbolState ( const MCSymbol Sym)
inline

Get the state recorded for the given symbol.

Definition at line 65 of file RecordStreamer.h.

References llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::MCSymbol::getName(), NeverSeen, and SI.

Referenced by handleSymverAliases().

◆ symverAliases()

DenseMap<const MCSymbol *, std::vector<MCSymbol *> >& llvm::RecordStreamer::symverAliases ( )
inline

Return the map of .symver aliasee to associated aliases.

Definition at line 60 of file RecordStreamer.h.

Referenced by handleSymverAliases().


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