|
LLVM
4.0.0
|
#include <MCELFStreamer.h>
Public Member Functions | |
| MCELFStreamer (MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS, MCCodeEmitter *Emitter) | |
| ~MCELFStreamer () override | |
| 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 |
| MCFragment * | getCurrentFragment () const |
| void | insert (MCFragment *F) |
| MCDataFragment * | getOrCreateDataFragment () |
| Get a data fragment to write into, creating a new one if the current fragment is not a data fragment. More... | |
| void | visitUsedSymbol (const MCSymbol &Sym) override |
| MCAssembler & | getAssembler () |
| void | EmitLabel (MCSymbol *Symbol) 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) 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 | 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 | 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) override |
| Emit a .reloc directive. More... | |
| void | emitFill (uint64_t NumBytes, uint8_t FillValue) override |
| Emit NumBytes bytes worth of the value specified by FillValue. 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 |
| 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... | |
| bool | mayHaveInstructions (MCSection &Sec) const override |
Public Member Functions inherited from llvm::MCStreamer | |
| virtual | ~MCStreamer () |
| void | visitUsedExpr (const MCExpr &Expr) |
| void | setTargetStreamer (MCTargetStreamer *TS) |
| MCContext & | getContext () const |
| MCTargetStreamer * | getTargetStreamer () |
| unsigned | getNumFrameInfos () |
| ArrayRef< MCDwarfFrameInfo > | getDwarfFrameInfos () const |
| bool | hasUnfinishedDwarfFrameInfo () |
| unsigned | getNumWinFrameInfos () |
| ArrayRef< WinEH::FrameInfo * > | getWinFrameInfos () const |
| void | generateCompactUnwindEncodings (MCAsmBackend *MAB) |
| virtual unsigned | EmitDwarfFileDirective (unsigned FileNo, StringRef Directory, StringRef Filename, unsigned CUID=0) |
| Associate a filename with a specified logical file number. More... | |
| virtual bool | EmitCVFileDirective (unsigned FileNo, StringRef Filename) |
| Associate a filename with a specified logical file number. 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 MCSymbol * | getDwarfLineTableSymbol (unsigned CUID) |
| 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 | 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) |
| virtual void | EmitWinCFIEndProc () |
| virtual void | EmitWinCFIStartChained () |
| virtual void | EmitWinCFIEndChained () |
| virtual void | EmitWinCFIPushReg (unsigned Register) |
| virtual void | EmitWinCFISetFrame (unsigned Register, unsigned Offset) |
| virtual void | EmitWinCFIAllocStack (unsigned Size) |
| virtual void | EmitWinCFISaveReg (unsigned Register, unsigned Offset) |
| virtual void | EmitWinCFISaveXMM (unsigned Register, unsigned Offset) |
| virtual void | EmitWinCFIPushFrame (bool Code) |
| virtual void | EmitWinCFIEndProlog () |
| virtual void | EmitWinEHHandler (const MCSymbol *Sym, bool Unwind, bool Except) |
| virtual void | EmitWinEHHandlerData () |
| MCSection * | getAssociatedPDataSection (const MCSection *TextSec) |
| Get the .pdata section used for the given section. More... | |
| MCSection * | getAssociatedXDataSection (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_ostream & | GetCommentOS () |
| 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... | |
| MCSection * | getCurrentSectionOnly () 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... | |
| MCSymbol * | endSection (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, unsigned Major, unsigned Minor, unsigned Update) |
| Specify the MachO minimum deployment target version. 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 | 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, unsigned Padding=0) |
| 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... | |
| virtual void | emitFill (uint64_t NumValues, int64_t Size, int64_t Expr) |
Emit NumValues copies of Size bytes. 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) override |
Emit a label for Symbol into the current section. More... | |
| 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 | BeginCOFFSymbolDef (const MCSymbol *Symbol) override |
| Start emitting COFF symbol definition. More... | |
| void | EmitCOFFSymbolStorageClass (int StorageClass) override |
| Emit the storage class of the symbol. More... | |
| void | EmitCOFFSymbolType (int Type) override |
| Emit the type of the symbol. More... | |
| void | EndCOFFSymbolDef () override |
| Marks the end of the symbol definition. More... | |
| void | emitELFSize (MCSymbol *Symbol, const MCExpr *Value) override |
| Emit an ELF .size 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) 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 | EmitFileDirective (StringRef Filename) override |
| Switch to a new logical file. 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 | 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, MCAsmBackend &TAB, raw_pwrite_stream &OS, MCCodeEmitter *Emitter) | |
| ~MCObjectStreamer () override | |
| 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::FrameInfo * | getCurrentWinFrameInfo () |
| 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... | |
Definition at line 27 of file MCELFStreamer.h.
|
inline |
Definition at line 29 of file MCELFStreamer.h.
|
override |
Definition at line 45 of file MCELFStreamer.cpp.
Start emitting COFF symbol definition.
| Symbol | - The symbol to have its External & Type fields set. |
Reimplemented from llvm::MCStreamer.
Definition at line 650 of file MCELFStreamer.cpp.
References llvm_unreachable.
Update streamer for a new active section.
This is called by PopSection and SwitchSection, if the current section changes.
Reimplemented from llvm::MCStreamer.
Definition at line 136 of file MCELFStreamer.cpp.
References llvm::HexStyle::Asm, llvm::MCObjectStreamer::ChangeSection(), llvm::MCObjectStreamer::getAssembler(), llvm::MCSection::getBeginSymbol(), llvm::MCStreamer::getContext(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCContext::getOrCreateSectionSymbol(), llvm::MCAssembler::registerSymbol(), llvm::report_fatal_error(), llvm::ARMBuildAttrs::Section, llvm::MCSection::setBeginSymbol(), setSectionAlignmentForBundling(), and llvm::ELF::STT_SECTION.
|
overridevirtual |
Note in the output the specified Flag.
Reimplemented from llvm::MCStreamer.
Definition at line 110 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::getBackend(), llvm::MCAsmBackend::handleAssemblerFlag(), llvm_unreachable, llvm::MCAF_Code16, llvm::MCAF_Code32, llvm::MCAF_Code64, llvm::MCAF_SubsectionsViaSymbols, llvm::MCAF_SyntaxUnified, and llvm::MCAssembler::setSubsectionsViaSymbols().
|
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 558 of file MCELFStreamer.cpp.
References assert(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::getBundleAlignSize(), llvm::report_fatal_error(), and llvm::MCAssembler::setBundleAlignSize().
|
overridevirtual |
The following instructions are a bundle-locked group.
| AlignToEnd | - If true, the bundle-locked group will be aligned to the end of a bundle. |
Reimplemented from llvm::MCStreamer.
Definition at line 568 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().
|
overridevirtual |
Ends a bundle-locked group.
Reimplemented from llvm::MCStreamer.
Definition at line 589 of file MCELFStreamer.cpp.
References assert(), llvm::MCSection::BundleLockedAlignToEnd, llvm::MCObjectStreamer::getAssembler(), llvm::MCSection::getBundleLockState(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCObjectStreamer::getOrCreateDataFragment(), llvm::MCAssembler::getRelaxAll(), llvm::MCSection::isBundleGroupBeforeFirstInst(), llvm::MCSection::NotBundleLocked, llvm::report_fatal_error(), llvm::MCFragment::setAlignToBundleEnd(), and llvm::MCSection::setBundleLockState().
|
overridevirtual |
Emit the storage class of the symbol.
| StorageClass | - The storage class the symbol should have. |
Reimplemented from llvm::MCStreamer.
Definition at line 654 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
Emit the type of the symbol.
Reimplemented from llvm::MCStreamer.
Definition at line 658 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
Emit a common symbol.
| 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 295 of file MCELFStreamer.cpp.
References llvm::MCConstantExpr::create(), EmitLabel(), EmitValueToAlignment(), llvm::MCStreamer::EmitZeros(), llvm::MCSection::getAlignment(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getContext(), llvm::MCAssembler::getContext(), llvm::MCStreamer::getCurrentSection(), llvm::MCContext::getELFSection(), P, llvm::MCAssembler::registerSymbol(), llvm::report_fatal_error(), llvm::ARMBuildAttrs::Section, llvm::MCSection::setAlignment(), llvm::ELF::SHF_ALLOC, llvm::ELF::SHF_WRITE, llvm::ELF::SHT_NOBITS, llvm::ELF::STB_GLOBAL, llvm::ELF::STB_LOCAL, llvm::ELF::STT_OBJECT, llvm::MCStreamer::SwitchSection(), and llvm::ARMBuildAttrs::Symbol.
Referenced by EmitLocalCommonSymbol().
Emit an ELF .size directive.
This corresponds to an assembler statement such as: .size symbol, expression
Reimplemented from llvm::MCStreamer.
Definition at line 332 of file MCELFStreamer.cpp.
References llvm::ARMBuildAttrs::Symbol.
|
overridevirtual |
Switch to a new logical file.
This is used to implement the '.file "foo.c"' assembler directive.
Reimplemented from llvm::MCStreamer.
Definition at line 367 of file MCELFStreamer.cpp.
References llvm::MCAssembler::addFileName(), and llvm::MCObjectStreamer::getAssembler().
|
overridevirtual |
Emit the "identifiers" directive.
This implements the '.ident "version foo"' assembler directive.
Reimplemented from llvm::MCStreamer.
Definition at line 371 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitBytes(), llvm::MCStreamer::EmitIntValue(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::getContext(), llvm::MCContext::getELFSection(), llvm::MCStreamer::PopSection(), llvm::MCStreamer::PushSection(), llvm::ELF::SHF_MERGE, llvm::ELF::SHF_STRINGS, llvm::ELF::SHT_PROGBITS, and llvm::MCStreamer::SwitchSection().
|
overridevirtual |
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 from llvm::MCStreamer.
Reimplemented in llvm::MipsELFStreamer.
Definition at line 98 of file MCELFStreamer.cpp.
References assert(), 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 EmitCommonSymbol(), llvm::MipsELFStreamer::EmitLabel(), llvm::AMDGPUTargetELFStreamer::EmitRuntimeMetadata(), and llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol().
|
overridevirtual |
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 from llvm::MCStreamer.
Definition at line 336 of file MCELFStreamer.cpp.
References EmitCommonSymbol(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::registerSymbol(), llvm::ELF::STB_LOCAL, and llvm::ARMBuildAttrs::Symbol.
|
overridevirtual |
Add the given Attribute to Symbol.
Implements llvm::MCStreamer.
Definition at line 189 of file MCELFStreamer.cpp.
References CombineSymbolTypes(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCAssembler::getIndirectSymbols(), llvm_unreachable, llvm::MCSA_AltEntry, llvm::MCSA_ELF_TypeCommon, llvm::MCSA_ELF_TypeFunction, llvm::MCSA_ELF_TypeGnuUniqueObject, llvm::MCSA_ELF_TypeIndFunction, llvm::MCSA_ELF_TypeNoType, llvm::MCSA_ELF_TypeObject, llvm::MCSA_ELF_TypeTLS, llvm::MCSA_Global, llvm::MCSA_Hidden, llvm::MCSA_IndirectSymbol, llvm::MCSA_Internal, llvm::MCSA_Invalid, llvm::MCSA_LazyReference, llvm::MCSA_Local, llvm::MCSA_NoDeadStrip, llvm::MCSA_PrivateExtern, llvm::MCSA_Protected, llvm::MCSA_Reference, llvm::MCSA_SymbolResolver, llvm::MCSA_Weak, llvm::MCSA_WeakDefAutoPrivate, llvm::MCSA_WeakDefinition, llvm::MCSA_WeakReference, llvm::MCAssembler::registerSymbol(), llvm::IndirectSymbolData::Section, llvm::ELF::STB_GLOBAL, llvm::ELF::STB_GNU_UNIQUE, llvm::ELF::STB_LOCAL, llvm::ELF::STB_WEAK, llvm::ELF::STT_FUNC, llvm::ELF::STT_GNU_IFUNC, llvm::ELF::STT_NOTYPE, llvm::ELF::STT_OBJECT, llvm::ELF::STT_TLS, llvm::ELF::STV_HIDDEN, llvm::ELF::STV_INTERNAL, llvm::ELF::STV_PROTECTED, llvm::IndirectSymbolData::Symbol, and llvm::ARMBuildAttrs::Symbol.
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 from llvm::MCStreamer.
Definition at line 646 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
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 if non-zero. This must be a power of 2 on some targets. |
Reimplemented from llvm::MCStreamer.
Definition at line 671 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
Note in the output that the specified Func is a Thumb mode function (ARM target only).
Reimplemented from llvm::MCStreamer.
Definition at line 642 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
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.
| 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 346 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitValueImpl(), and llvm::report_fatal_error().
Referenced by llvm::MipsELFStreamer::EmitValueImpl().
|
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.
| 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 354 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitValueToAlignment(), and llvm::report_fatal_error().
Referenced by EmitCommonSymbol(), and llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol().
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 from llvm::MCStreamer.
Definition at line 163 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.
|
overridevirtual |
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 if non-zero. This must be a power of 2 on some targets. |
Implements llvm::MCStreamer.
Definition at line 666 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
Marks the end of the symbol definition.
Reimplemented from llvm::MCStreamer.
Definition at line 662 of file MCELFStreamer.cpp.
References llvm_unreachable.
|
overridevirtual |
Streamer specific finalization.
Reimplemented from llvm::MCStreamer.
Definition at line 623 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitFrames(), llvm::MCObjectStreamer::FinishImpl(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getCurrentSectionOnly(), and setSectionAlignmentForBundling().
|
overridevirtual |
Create the default sections and set the initial one.
Reimplemented from llvm::MCStreamer.
Definition at line 89 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitCodeAlignment(), llvm::MCContext::getAsmInfo(), llvm::MCStreamer::getContext(), llvm::MCAsmInfo::getNonexecutableStackSection(), llvm::MCContext::getObjectFileInfo(), llvm::MCObjectFileInfo::getTextSection(), and llvm::MCStreamer::SwitchSection().
|
inlineoverridevirtual |
state management
Reimplemented from llvm::MCStreamer.
Definition at line 36 of file MCELFStreamer.h.
References llvm::MCObjectStreamer::reset().
1.8.6