|
LLVM
4.0.0
|
#include <HexagonMCELFStreamer.h>
Public Member Functions | |
| HexagonMCELFStreamer (MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS, MCCodeEmitter *Emitter) | |
| void | EmitInstruction (const MCInst &Inst, const MCSubtargetInfo &STI) override |
Emit the given Instruction into the current section. More... | |
| void | EmitSymbol (const MCInst &Inst) |
| void | HexagonMCEmitLocalCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment, unsigned AccessSize) |
| void | HexagonMCEmitCommonSymbol (MCSymbol *Symbol, uint64_t Size, unsigned ByteAlignment, unsigned AccessSize) |
Public Member Functions inherited from llvm::MCELFStreamer | |
| MCELFStreamer (MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS, MCCodeEmitter *Emitter) | |
| ~MCELFStreamer () override | |
| void | reset () override |
| state management More... | |
| 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... | |
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 | 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... | |
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 21 of file HexagonMCELFStreamer.h.
|
inline |
Definition at line 25 of file HexagonMCELFStreamer.h.
|
overridevirtual |
Emit the given Instruction into the current section.
Reimplemented from llvm::MCObjectStreamer.
Definition at line 45 of file HexagonMCELFStreamer.cpp.
References llvm::MCInst::addOperand(), assert(), llvm::HexagonMCInstrInfo::bundleInstructions(), llvm::HexagonMCInstrInfo::bundleSize(), llvm::HexagonMCInstrInfo::clampExtended(), llvm::HexagonMCInstrInfo::createBundle(), llvm::MCOperand::createInst(), llvm::MCObjectStreamer::EmitInstruction(), EmitSymbol(), llvm::MCStreamer::getContext(), llvm::MCOperand::getInst(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), HEXAGON_PACKET_SIZE, llvm::HexagonMCShuffle(), I, llvm::HexagonMCInstrInfo::isDuplex(), llvm::HexagonMCInstrInfo::isImmext(), and llvm::HexagonMCInstrInfo::padEndloop().
Definition at line 87 of file HexagonMCELFStreamer.cpp.
References llvm::MCOperand::getExpr(), llvm::MCInst::getNumOperands(), llvm::MCInst::getOperand(), i, llvm::MCOperand::isExpr(), and llvm::MCStreamer::visitUsedExpr().
Referenced by EmitInstruction().
| void HexagonMCELFStreamer::HexagonMCEmitCommonSymbol | ( | MCSymbol * | Symbol, |
| uint64_t | Size, | ||
| unsigned | ByteAlignment, | ||
| unsigned | AccessSize | ||
| ) |
Definition at line 97 of file HexagonMCELFStreamer.cpp.
References llvm::MCConstantExpr::create(), llvm::MCELFStreamer::EmitLabel(), llvm::MCELFStreamer::EmitValueToAlignment(), llvm::MCStreamer::EmitZeros(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getContext(), llvm::MCAssembler::getContext(), llvm::MCStreamer::getCurrentSection(), llvm::MCContext::getELFSection(), llvm::MCSymbol::getName(), GPSize, llvm::Log2_64(), P, llvm::MCAssembler::registerSymbol(), llvm::report_fatal_error(), llvm::ARMBuildAttrs::Section, AMDGPU::PT_NOTE::SectionName, llvm::ELF::SHF_ALLOC, llvm::ELF::SHF_WRITE, llvm::ELF::SHN_HEXAGON_SCOMMON, 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 HexagonMCEmitLocalCommonSymbol().
| void HexagonMCELFStreamer::HexagonMCEmitLocalCommonSymbol | ( | MCSymbol * | Symbol, |
| uint64_t | Size, | ||
| unsigned | ByteAlignment, | ||
| unsigned | AccessSize | ||
| ) |
Definition at line 147 of file HexagonMCELFStreamer.cpp.
References llvm::MCObjectStreamer::getAssembler(), HexagonMCEmitCommonSymbol(), llvm::MCAssembler::registerSymbol(), llvm::ELF::STB_LOCAL, and llvm::ARMBuildAttrs::Symbol.
1.8.6