LLVM
8.0.1
|
#include "llvm/MC/MCELFStreamer.h"
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 |
MCFragment * | getCurrentFragment () const |
void | insert (MCFragment *F) |
MCDataFragment * | getOrCreateDataFragment (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... | |
MCPaddingFragment * | getOrCreatePaddingFragment () |
void | visitUsedSymbol (const MCSymbol &Sym) override |
void | flushPendingLabels () |
Create a dummy fragment to assign any pending labels. More... | |
MCAssembler & | getAssembler () |
MCAssembler * | getAssemblerPtr () 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 | |
MCStreamer & | operator= (const MCStreamer &)=delete |
virtual | ~MCStreamer () |
void | visitUsedExpr (const MCExpr &Expr) |
void | setTargetStreamer (MCTargetStreamer *TS) |
MCContext & | getContext () const |
void | setUseAssemblerInfoForParsing (bool v) |
bool | getUseAssemblerInfoForParsing () |
MCTargetStreamer * | getTargetStreamer () |
WinEH::FrameInfo * | EnsureValidWinFrameInfo (SMLoc Loc) |
Retreive the current frame info if one is available and it is not yet closed. More... | |
unsigned | getNumFrameInfos () |
ArrayRef< MCDwarfFrameInfo > | getDwarfFrameInfos () 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< unsigned > | tryEmitDwarfFileDirective (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 MCSymbol * | getDwarfLineTableSymbol (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()) |
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 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::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... | |
bool | checkCVLocSection (unsigned FuncId, unsigned FileNo, SMLoc Loc) |
Returns true if the the .cv_loc directive is in the right section. More... | |
Definition at line 24 of file MCELFStreamer.h.
MCELFStreamer::MCELFStreamer | ( | MCContext & | Context, |
std::unique_ptr< MCAsmBackend > | TAB, | ||
std::unique_ptr< MCObjectWriter > | OW, | ||
std::unique_ptr< MCCodeEmitter > | Emitter | ||
) |
Definition at line 42 of file MCELFStreamer.cpp.
References llvm::SmallVectorImpl< T >::append(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::computeBundlePadding(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::MCObjectStreamer::flushPendingLabels(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::getBundleAlignSize(), llvm::MCEncodedFragmentWithContents< ContentsSize >::getContents(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::getFixups(), llvm::MCAssembler::getRelaxAll(), llvm::MCEncodedFragment::getSubtargetInfo(), llvm::MCSection::isBundleLocked(), llvm::MCAssembler::isBundlingEnabled(), llvm::report_fatal_error(), llvm::MCEncodedFragment::setBundlePadding(), llvm::MCEncodedFragment::setHasInstructions(), llvm::SmallVectorBase::size(), and llvm::MCAssembler::writeFragmentPadding().
Referenced by llvm::createELFStreamer().
|
overridedefault |
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 146 of file MCELFStreamer.cpp.
References llvm::HexStyle::Asm, llvm::MCObjectStreamer::changeSectionImpl(), llvm::MCObjectStreamer::getAssembler(), llvm::MCSection::getBeginSymbol(), llvm::MCStreamer::getCurrentSectionOnly(), llvm::MCAssembler::registerSymbol(), llvm::report_fatal_error(), llvm::ARMBuildAttrs::Section, and setSectionAlignmentForBundling().
Referenced by GetAEABIUnwindPersonalityName(), and reset().
|
overridevirtual |
Note in the output the specified Flag
.
Reimplemented from llvm::MCStreamer.
Definition at line 120 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().
Referenced by GetAEABIUnwindPersonalityName(), and reset().
|
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().
|
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 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().
|
overridevirtual |
Ends a bundle-locked group.
Reimplemented from llvm::MCStreamer.
Definition at line 632 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::MCEncodedFragment::setAlignToBundleEnd(), and llvm::MCSection::setBundleLockState().
Referenced by reset().
|
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().
|
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 285 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(), and reset().
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().
|
overridevirtual |
Emit an ELF .symver directive.
This corresponds to an assembler statement such as: .symver _start, foo@SOME_VERSION
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().
|
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().
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 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().
|
overridevirtual |
Reimplemented from llvm::MCObjectStreamer.
Definition at line 110 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.
|
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 331 of file MCELFStreamer.cpp.
References EmitCommonSymbol(), llvm::MCObjectStreamer::getAssembler(), llvm::MCAssembler::registerSymbol(), llvm::ELF::STB_LOCAL, and llvm::ARMBuildAttrs::Symbol.
Referenced by reset().
|
overridevirtual |
Add the given Attribute
to Symbol
.
Implements llvm::MCStreamer.
Definition at line 190 of file MCELFStreamer.cpp.
References CombineSymbolTypes(), llvm::MCObjectStreamer::getAssembler(), 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::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, and llvm::ARMBuildAttrs::Symbol.
Referenced by reset().
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 681 of file MCELFStreamer.cpp.
References llvm_unreachable.
Referenced by reset().
|
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 691 of file MCELFStreamer.cpp.
References llvm_unreachable.
Referenced by reset().
|
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().
|
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 341 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitValueImpl(), and llvm::report_fatal_error().
Referenced by llvm::MipsELFStreamer::EmitValueImpl(), GetAEABIUnwindPersonalityName(), and reset().
|
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 349 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitValueToAlignment(), and llvm::report_fatal_error().
Referenced by EmitCommonSymbol(), llvm::HexagonMCELFStreamer::HexagonMCEmitCommonSymbol(), and reset().
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 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().
|
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 685 of file MCELFStreamer.cpp.
References llvm_unreachable.
Referenced by reset().
|
overridevirtual |
Streamer specific finalization.
Reimplemented from llvm::MCStreamer.
Definition at line 666 of file MCELFStreamer.cpp.
References llvm::MCObjectStreamer::EmitFrames(), llvm::MCObjectStreamer::FinishImpl(), llvm::MCObjectStreamer::getAssembler(), llvm::MCStreamer::getCurrentSectionOnly(), and setSectionAlignmentForBundling().
Referenced by GetAEABIUnwindPersonalityName(), and reset().
|
overridevirtual |
Create the default sections and set the initial one.
Reimplemented from llvm::MCStreamer.
Definition at line 91 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().
Referenced by reset().
|
inlineoverridevirtual |
state management
Reimplemented from llvm::MCStreamer.
Definition at line 33 of file MCELFStreamer.h.
References llvm::LCOMM::ByteAlignment, ChangeSection(), Context, llvm::createARMELFStreamer(), EmitAssemblerFlag(), EmitBundleAlignMode(), EmitBundleLock(), EmitBundleUnlock(), emitCGProfileEntry(), EmitCommonSymbol(), emitELFSize(), emitELFSymverDirective(), EmitIdent(), EmitLabel(), EmitLocalCommonSymbol(), EmitSymbolAttribute(), EmitSymbolDesc(), EmitTBSSSymbol(), EmitThumbFunc(), EmitValueImpl(), EmitValueToAlignment(), EmitWeakReference(), EmitZerofill(), F(), FinishImpl(), From, InitSections(), llvm::MCObjectStreamer::reset(), llvm::ARMBuildAttrs::Section, Size, and llvm::ARMBuildAttrs::Symbol.
Referenced by GetAEABIUnwindPersonalityName().