16 #ifndef LLVM_MC_MCASMINFO_H
17 #define LLVM_MC_MCASMINFO_H
bool HasSingleParameterDotFile
True if the target has a single parameter .file directive, this is true for ELF targets.
const char * Code16Directive
These are assembly directives that tells the assembler to interpret the following instructions differ...
virtual bool isValidUnquotedName(StringRef Name) const
Return true if the identifier Name does not need quotes to be syntactically correct.
Instances of this class represent a uniqued identifier for a section in the current translation unit...
LCOMM::LCOMMType LCOMMDirectiveAlignmentType
Describes if the .lcomm directive for the target supports an alignment argument and how it is interpr...
bool doesSupportDebugInformation() const
unsigned getAssemblerDialect() const
bool useAssignmentForEHBegin() const
bool canRelaxRelocations() const
unsigned TextAlignFillValue
If non-zero, this is used to fill the executable space created as the result of a alignment directive...
bool useDwarfRegNumForCFI() const
const char * getData8bitsDirective() const
bool HasSubsectionsViaSymbols
True if this target has the MachO .subsections_via_symbols directive.
bool UseIntegratedAssembler
Should we use the integrated assembler? The integrated assembler should be enabled by default (by the...
bool hasIdentDirective() const
bool doesAllowAtInName() const
StringRef PrivateLabelPrefix
This prefix is used for labels for basic blocks.
bool needsLocalForSize() const
const char * WeakDirective
Used to declare a global as being a weak symbol. Defaults to ".weak".
bool DwarfRegNumForCFI
True if dwarf register numbers are printed instead of symbolic register names in .cfi_* directives.
void setCompressDebugSections(DebugCompressionType CompressDebugSections)
unsigned getTextAlignFillValue() const
WinEH::EncodingType getWinEHEncodingType() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
virtual void setUseIntegratedAssembler(bool Value)
Set whether assembly (inline or otherwise) should be parsed.
bool DwarfUsesRelocationsAcrossSections
True if Dwarf2 output generally uses relocations for references to other .debug_* sections...
const char * Data64bitsDirective
const char * ZeroDirective
This should be set to the directive used to get some number of zero bytes emitted to the current sect...
bool SupportsQuotedNames
If this is true, symbol names with invalid characters will be printed in quotes.
bool IsLittleEndian
True if target is little endian. Default is true.
const char * GlobalDirective
This is the directive used to declare a global entity.
unsigned CalleeSaveStackSlotSize
Size of the stack slot reserved for callee-saved registers, in bytes.
unsigned AssemblerDialect
Which dialect of an assembler variant to use. Defaults to 0.
bool HasWeakDefCanBeHiddenDirective
True if we have a directive to declare a global as being a weak defined symbol that can be hidden (un...
virtual bool isSectionAtomizableBySymbols(const MCSection &Section) const
True if the section is atomized using the symbols in it.
setjmp/longjmp based exceptions
const char * getWeakRefDirective() const
LCOMM::LCOMMType getLCOMMDirectiveAlignmentType() const
bool hasLinkOnceDirective() const
bool HasDotTypeDotSizeDirective
True if the target has .type and .size directives, this is true for most ELF targets.
const char * AsciiDirective
This directive allows emission of an ascii string with the standard C escape characters embedded into...
bool AlignmentIsInBytes
If this is true (the default) then the asmprinter emits ".align N" directives, where N is the number ...
const char * SeparatorString
This string, if specified, is used to separate instructions from each other when on the same line...
bool hasMachoTBSSDirective() const
DebugCompressionType compressDebugSections() const
StringRef getCommentString() const
bool HasNoDeadStrip
True if this target supports the MachO .no_dead_strip directive.
MCSymbolAttr getHiddenVisibilityAttr() const
virtual const MCExpr * getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
bool hasLinkerPrivateGlobalPrefix() const
bool hasWeakDefDirective() const
bool UseLogicalShr
True if the integrated assembler should interpret 'a >> b' constant expressions as logical rather t...
StringRef CommentString
This indicates the comment character used by the assembler.
bool UsesELFSectionDirectiveForBSS
This is true if this target uses ELF '.section' directive before the '.bss' one.
const char * Data8bitsDirective
These directives are used to output some unit of integer data to the current section.
bool HasAggressiveSymbolFolding
False if the assembler requires that we use.
Base class for the full range of assembler expressions which are needed for parsing.
unsigned getCommentColumn() const
This indicates the column (zero-based) at which asm comments should be printed.
const char * getTPRel64Directive() const
const std::vector< MCCFIInstruction > & getInitialFrameState() const
Windows x86, uses no CFI, just EH tables.
bool hasMachoZeroFillDirective() const
bool StackGrowsUp
True if target stack grow up. Default is false.
StringRef getPrivateGlobalPrefix() const
Windows NT (Windows on ARM)
const char * getInlineAsmEnd() const
bool isLittleEndian() const
True if the target is little endian.
Context object for machine code objects.
bool SunStyleELFSectionSwitchSyntax
This is true if this target uses "Sun Style" syntax for section switching ("#alloc,#write" etc) instead of the normal ELF syntax (,"a,w") in .section directives.
const char * getLabelSuffix() const
bool HasFunctionAlignment
MCSymbolAttr HiddenVisibilityAttr
This attribute, if not MCSA_Invalid, is used to declare a symbol as having hidden visibility...
const char * getCode16Directive() const
const char * getDTPRel64Directive() const
void addInitialFrameState(const MCCFIInstruction &Inst)
const char * getCode32Directive() const
const char * Code32Directive
bool HasLinkOnceDirective
True if we have a .linkonce directive.
const char * AscizDirective
If not null, this allows for special handling of zero terminated strings on this target.
virtual bool shouldOmitSectionDirective(StringRef SectionName) const
Return true if the .section directive should be omitted when emitting SectionName.
bool doesSupportExceptionHandling() const
bool DollarIsPC
The '$' token, when not referencing an identifier or constant, refers to the current PC...
This class is intended to be used as a base class for asm properties and features specific to the tar...
const char * InlineAsmStart
If these are nonempty, they contain a directive to emit before and after an inline assembly statement...
bool needsDwarfSectionOffsetDirective() const
bool HasIdentDirective
True if the target has a .ident directive, this is true for ELF targets.
Streaming machine code generation interface.
virtual void setPreserveAsmComments(bool Value)
Set whether assembly (inline or otherwise) should be parsed.
const char * GPRel64Directive
If non-null, a directive that is used to emit a word which should be relocated as a 64-bit GP-relativ...
MCSymbolAttr getHiddenDeclarationVisibilityAttr() const
const char * getAsciiDirective() const
MCSymbolAttr getProtectedVisibilityAttr() const
const char * TPRel32Directive
bool COMMDirectiveAlignmentIsInBytes
True is .comm's and .lcomms optional alignment is to be specified in bytes instead of log2(n)...
unsigned PointerSize
Pointer size in bytes. Default is 4.
bool AllowAtInName
This is true if the assembler allows @ characters in symbol names.
bool shouldUseLogicalShr() const
bool hasFunctionAlignment() const
bool SupportsDebugInformation
True if target supports emission of debugging information.
bool usesSunStyleELFSectionSwitchSyntax() const
const char * getData16bitsDirective() const
const char * getData32bitsDirective() const
bool preserveAsmComments() const
Return true if assembly (inline or otherwise) should be parsed.
WinEH::EncodingType WinEHEncodingType
Windows exception handling data (.pdata) encoding. Defaults to Invalid.
const char * WeakRefDirective
This directive, if non-null, is used to declare a global as being a weak undefined symbol...
ExceptionHandling getExceptionHandlingType() const
const char * getWeakDirective() const
DebugCompressionType CompressDebugSections
Compress DWARF debug sections. Defaults to no compression.
const char * Data16bitsDirective
bool UseAssignmentForEHBegin
const char * getData64bitsDirective() const
void setRelaxELFRelocations(bool V)
const char * DTPRel64Directive
const char * getCode64Directive() const
Windows x64, Windows Itanium (IA-64)
unsigned getPointerSize() const
Get the pointer size in bytes.
StringRef getPrivateLabelPrefix() const
bool HasWeakDefDirective
True if we have a directive to declare a global as being a weak defined symbol.
bool usesELFSectionDirectiveForBSS() const
bool hasMipsExpressions() const
bool doesSetDirectiveSuppressReloc() const
unsigned getMinInstAlignment() const
bool doDwarfFDESymbolsUseAbsDiff() const
bool doesSupportDataRegionDirectives() const
bool HasAltEntry
True if this target supports the MachO .alt_entry directive.
const char * LabelSuffix
This is appended to emitted labels. Defaults to ":".
bool HasMachoZeroFillDirective
True if this is a MachO target that supports the macho-specific .zerofill directive for emitting BSS ...
const char * TPRel64Directive
bool getDollarIsPC() const
std::vector< MCCFIInstruction > InitialFrameState
const char * InlineAsmEnd
bool DwarfFDESymbolsUseAbsDiff
True if DWARF FDE symbol reference relocations should be replaced by an absolute difference.
bool HasMachoTBSSDirective
True if this is a MachO target that supports the macho-specific .tbss directive for emitting thread l...
const char * getGPRel64Directive() const
unsigned MinInstAlignment
Every possible instruction length is a multiple of this value.
const char * getGPRel32Directive() const
const char * Data32bitsDirective
const char * GPRel32Directive
If non-null, a directive that is used to emit a word which should be relocated as a 32-bit GP-relativ...
bool hasSingleParameterDotFile() const
bool getCOMMDirectiveAlignmentIsInBytes() const
bool getAlignmentIsInBytes() const
bool PreserveAsmComments
Preserve Comments in assembly.
MCSymbolAttr ProtectedVisibilityAttr
This attribute, if not MCSA_Invalid, is used to declare a symbol as having protected visibility...
bool hasNoDeadStrip() const
bool SetDirectiveSuppressesReloc
True if the expression .long f - g uses a relocation but it can be suppressed by writing a = f - g ...
bool isStackGrowthDirectionUp() const
True if target stack grow up.
bool supportsNameQuoting() const
const char * getSeparatorString() const
ExceptionHandling ExceptionsType
Exception handling format for the target. Defaults to None.
StringRef LinkerPrivateGlobalPrefix
This prefix is used for symbols that should be passed through the assembler but be removed by the lin...
unsigned getCalleeSaveStackSlotSize() const
Get the callee-saved register stack slot size in bytes.
bool UseDataRegionDirectives
This is true if data region markers should be printed as ".data_region/.end_data_region" directives...
bool hasAggressiveSymbolFolding() const
bool NeedsDwarfSectionOffsetDirective
virtual MCSection * getNonexecutableStackSection(MCContext &Ctx) const
Targets can implement this method to specify a section to switch to if the translation unit doesn't h...
MCSymbolAttr HiddenDeclarationVisibilityAttr
This attribute, if not MCSA_Invalid, is used to declare an undefined symbol as having hidden visibili...
virtual const MCExpr * getExprForFDESymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
const char * getDTPRel32Directive() const
LLVM Value Representation.
unsigned getMaxInstLength() const
bool useParensForSymbolVariant() const
StringRef getLinkerPrivateGlobalPrefix() const
bool hasSubsectionsViaSymbols() const
Windows CE ARM, PowerPC, SH3, SH4.
const char * DTPRel32Directive
If non-null, directives that are used to emit a word/dword which should be relocated as a 32/64-bit D...
bool useIntegratedAssembler() const
Return true if assembly (inline or otherwise) should be parsed.
const char * getZeroDirective() const
const char * getAscizDirective() const
bool hasWeakDefCanBeHiddenDirective() const
const char * getGlobalDirective() const
void setExceptionsType(ExceptionHandling EH)
bool usesCFIForEH() const
Returns true if the exception handling method for the platform uses call frame information to unwind...
StringRef - Represent a constant reference to a string, i.e.
const char * getInlineAsmStart() const
bool hasDotTypeDotSizeDirective() const
StringRef PrivateGlobalPrefix
This prefix is used for globals like constant pool entries that are completely private to the ...
const char * getTPRel32Directive() const
bool doesDwarfUseRelocationsAcrossSections() const
const char * Code64Directive
unsigned MaxInstLength
This is the maximum possible length of an instruction, which is needed to compute the size of an inli...
bool UseParensForSymbolVariant
True if target uses parens to indicate the symbol variant instead of
bool usesWindowsCFI() const