LLVM 20.0.0git
Public Member Functions | Static Public Member Functions | List of all members
llvm::MCAsmInfoDarwin Class Reference

#include "llvm/MC/MCAsmInfoDarwin.h"

Inheritance diagram for llvm::MCAsmInfoDarwin:
Inheritance graph
[legend]

Public Member Functions

 MCAsmInfoDarwin ()
 
- Public Member Functions inherited from llvm::MCAsmInfo
 MCAsmInfo ()
 
virtual ~MCAsmInfo ()
 
unsigned getCodePointerSize () const
 Get the code pointer size in bytes.
 
unsigned getCalleeSaveStackSlotSize () const
 Get the callee-saved register stack slot size in bytes.
 
bool isLittleEndian () const
 True if the target is little endian.
 
bool isStackGrowthDirectionUp () const
 True if target stack grow up.
 
bool hasSubsectionsViaSymbols () const
 
const chargetData8bitsDirective () const
 
const chargetData16bitsDirective () const
 
const chargetData32bitsDirective () const
 
const chargetData64bitsDirective () const
 
bool supportsSignedData () const
 
const chargetGPRel64Directive () const
 
const chargetGPRel32Directive () const
 
const chargetDTPRel64Directive () const
 
const chargetDTPRel32Directive () const
 
const chargetTPRel64Directive () const
 
const chargetTPRel32Directive () const
 
virtual MCSectiongetNonexecutableStackSection (MCContext &Ctx) const
 Targets can implement this method to specify a section to switch to if the translation unit doesn't have any trampolines that require an executable stack.
 
virtual const MCExprgetExprForPersonalitySymbol (const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
 
virtual const MCExprgetExprForFDESymbol (const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
 
virtual bool isAcceptableChar (char C) const
 Return true if C is an acceptable character inside a symbol name.
 
virtual bool isValidUnquotedName (StringRef Name) const
 Return true if the identifier Name does not need quotes to be syntactically correct.
 
virtual bool shouldOmitSectionDirective (StringRef SectionName) const
 Return true if the .section directive should be omitted when emitting SectionName.
 
bool usesSunStyleELFSectionSwitchSyntax () const
 
bool usesELFSectionDirectiveForBSS () const
 
bool needsDwarfSectionOffsetDirective () const
 
bool isMachO () const
 
bool hasCOFFAssociativeComdats () const
 
bool hasCOFFComdatConstants () const
 
bool hasVisibilityOnlyWithLinkage () const
 
virtual unsigned getMaxInstLength (const MCSubtargetInfo *STI=nullptr) const
 Returns the maximum possible encoded instruction size in bytes.
 
unsigned getMinInstAlignment () const
 
bool getDollarIsPC () const
 
bool getDotIsPC () const
 
bool getStarIsPC () const
 
const chargetSeparatorString () const
 
unsigned getCommentColumn () const
 
void setCommentColumn (unsigned Col)
 
StringRef getCommentString () const
 
bool getRestrictCommentStringToStartOfStatement () const
 
bool shouldAllowAdditionalComments () const
 
bool getEmitGNUAsmStartIndentationMarker () const
 
const chargetLabelSuffix () const
 
bool shouldEmitLabelsInUpperCase () const
 
bool useAssignmentForEHBegin () const
 
bool needsLocalForSize () const
 
StringRef getPrivateGlobalPrefix () const
 
StringRef getPrivateLabelPrefix () const
 
bool hasLinkerPrivateGlobalPrefix () const
 
StringRef getLinkerPrivateGlobalPrefix () const
 
const chargetInlineAsmStart () const
 
const chargetInlineAsmEnd () const
 
const chargetCode16Directive () const
 
const chargetCode32Directive () const
 
const chargetCode64Directive () const
 
unsigned getAssemblerDialect () const
 
bool doesAllowAtInName () const
 
void setAllowAtInName (bool V)
 
bool doesAllowQuestionAtStartOfIdentifier () const
 
bool doesAllowAtAtStartOfIdentifier () const
 
bool doesAllowDollarAtStartOfIdentifier () const
 
bool doesAllowHashAtStartOfIdentifier () const
 
bool supportsNameQuoting () const
 
bool doesSupportDataRegionDirectives () const
 
bool useDotAlignForAlignment () const
 
bool hasLEB128Directives () const
 
bool useFullRegisterNames () const
 
void setFullRegisterNames (bool V)
 
const chargetZeroDirective () const
 
bool doesZeroDirectiveSupportNonZeroValue () const
 
const chargetAsciiDirective () const
 
const chargetAscizDirective () const
 
const chargetByteListDirective () const
 
const chargetPlainStringDirective () const
 
AsmCharLiteralSyntax characterLiteralSyntax () const
 
bool getAlignmentIsInBytes () const
 
unsigned getTextAlignFillValue () const
 
const chargetGlobalDirective () const
 
bool doesSetDirectiveSuppressReloc () const
 
bool getCOMMDirectiveAlignmentIsInBytes () const
 
LCOMM::LCOMMType getLCOMMDirectiveAlignmentType () const
 
bool hasBasenameOnlyForFileDirective () const
 
bool hasPairedDoubleQuoteStringConstants () const
 
bool hasFunctionAlignment () const
 
bool hasDotTypeDotSizeDirective () const
 
bool hasSingleParameterDotFile () const
 
bool hasFourStringsDotFile () const
 
bool hasIdentDirective () const
 
bool hasNoDeadStrip () const
 
const chargetWeakDirective () const
 
const chargetWeakRefDirective () const
 
bool hasWeakDefCanBeHiddenDirective () const
 
bool avoidWeakIfComdat () const
 
MCSymbolAttr getHiddenVisibilityAttr () const
 
MCSymbolAttr getExportedVisibilityAttr () const
 
MCSymbolAttr getHiddenDeclarationVisibilityAttr () const
 
MCSymbolAttr getProtectedVisibilityAttr () const
 
MCSymbolAttr getMemtagAttr () const
 
bool doesSupportDebugInformation () const
 
ExceptionHandling getExceptionHandlingType () const
 
WinEH::EncodingType getWinEHEncodingType () const
 
void setExceptionsType (ExceptionHandling EH)
 
bool usesCFIWithoutEH () const
 
bool usesCFIForEH () const
 Returns true if the exception handling method for the platform uses call frame information to unwind.
 
bool usesWindowsCFI () const
 
bool doesDwarfUseRelocationsAcrossSections () const
 
bool doDwarfFDESymbolsUseAbsDiff () const
 
bool useDwarfRegNumForCFI () const
 
bool useParensForSymbolVariant () const
 
bool useParensForDollarSignNames () const
 
bool supportsExtendedDwarfLocDirective () const
 
bool usesDwarfFileAndLocDirectives () const
 
bool needsDwarfSectionSizeInHeader () const
 
bool enableDwarfFileDirectoryDefault () const
 
void addInitialFrameState (const MCCFIInstruction &Inst)
 
const std::vector< MCCFIInstruction > & getInitialFrameState () const
 
void setBinutilsVersion (std::pair< int, int > Value)
 
bool useIntegratedAssembler () const
 Return true if assembly (inline or otherwise) should be parsed.
 
bool parseInlineAsmUsingAsmParser () const
 Return true if target want to use AsmParser to parse inlineasm.
 
bool binutilsIsAtLeast (int Major, int Minor) const
 
virtual void setUseIntegratedAssembler (bool Value)
 Set whether assembly (inline or otherwise) should be parsed.
 
virtual void setParseInlineAsmUsingAsmParser (bool Value)
 Set whether target want to use AsmParser to parse inlineasm.
 
bool preserveAsmComments () const
 Return true if assembly (inline or otherwise) should be parsed.
 
virtual void setPreserveAsmComments (bool Value)
 Set whether assembly (inline or otherwise) should be parsed.
 
bool shouldUseLogicalShr () const
 
bool hasMipsExpressions () const
 
bool needsFunctionDescriptors () const
 
bool shouldUseMotorolaIntegers () const
 

Static Public Member Functions

static bool isSectionAtomizableBySymbols (const MCSection &Section)
 True if the section is atomized using the symbols in it.
 

Additional Inherited Members

- Public Types inherited from llvm::MCAsmInfo
enum  AsmCharLiteralSyntax { ACLS_Unknown , ACLS_SingleQuotePrefix }
 Assembly character literal syntax types. More...
 
- Protected Attributes inherited from llvm::MCAsmInfo
unsigned CodePointerSize = 4
 Code pointer size in bytes. Default is 4.
 
unsigned CalleeSaveStackSlotSize = 4
 Size of the stack slot reserved for callee-saved registers, in bytes.
 
bool IsLittleEndian = true
 True if target is little endian. Default is true.
 
bool StackGrowsUp = false
 True if target stack grow up. Default is false.
 
bool HasSubsectionsViaSymbols = false
 True if this target has the MachO .subsections_via_symbols directive.
 
bool HasCOFFAssociativeComdats = false
 True if this is a non-GNU COFF target.
 
bool HasCOFFComdatConstants = false
 True if this is a non-GNU COFF target.
 
bool HasVisibilityOnlyWithLinkage = false
 True if this is an XCOFF target that supports visibility attributes as part of .global, .weak, .extern, and .comm.
 
unsigned MaxInstLength = 4
 This is the maximum possible length of an instruction, which is needed to compute the size of an inline asm.
 
unsigned MinInstAlignment = 1
 Every possible instruction length is a multiple of this value.
 
bool DollarIsPC = false
 The '$' token, when not referencing an identifier or constant, refers to the current PC.
 
bool DotIsPC = true
 Allow '.
 
bool StarIsPC = false
 Whether the '*' token refers to the current PC.
 
const charSeparatorString
 This string, if specified, is used to separate instructions from each other when on the same line.
 
StringRef CommentString
 This indicates the comment string used by the assembler.
 
bool RestrictCommentStringToStartOfStatement = false
 This indicates whether the comment string is only accepted as a comment at the beginning of statements.
 
bool AllowAdditionalComments = true
 This indicates whether to allow additional "comment strings" to be lexed as a comment.
 
bool EmitGNUAsmStartIndentationMarker = true
 Should we emit the '\t' as the starting indentation marker for GNU inline asm statements.
 
const charLabelSuffix
 This is appended to emitted labels. Defaults to ":".
 
bool EmitLabelsInUpperCase = false
 Emit labels in purely upper case. Defaults to false.
 
bool UseAssignmentForEHBegin = false
 
bool NeedsLocalForSize = false
 
StringRef PrivateGlobalPrefix
 This prefix is used for globals like constant pool entries that are completely private to the .s file and should not have names in the .o file.
 
StringRef PrivateLabelPrefix
 This prefix is used for labels for basic blocks.
 
StringRef LinkerPrivateGlobalPrefix
 This prefix is used for symbols that should be passed through the assembler but be removed by the linker.
 
const charInlineAsmStart
 If these are nonempty, they contain a directive to emit before and after an inline assembly statement.
 
const charInlineAsmEnd
 
const charCode16Directive
 These are assembly directives that tells the assembler to interpret the following instructions differently.
 
const charCode32Directive
 
const charCode64Directive
 
unsigned AssemblerDialect = 0
 Which dialect of an assembler variant to use. Defaults to 0.
 
bool AllowAtInName = false
 This is true if the assembler allows @ characters in symbol names.
 
bool AllowQuestionAtStartOfIdentifier = false
 This is true if the assembler allows the "?" character at the start of of a string to be lexed as an AsmToken::Identifier.
 
bool AllowDollarAtStartOfIdentifier = false
 This is true if the assembler allows the "$" character at the start of of a string to be lexed as an AsmToken::Identifier.
 
bool AllowAtAtStartOfIdentifier = false
 This is true if the assembler allows the "@" character at the start of a string to be lexed as an AsmToken::Identifier.
 
bool AllowHashAtStartOfIdentifier = false
 This is true if the assembler allows the "#" character at the start of a string to be lexed as an AsmToken::Identifier.
 
bool SupportsQuotedNames = true
 If this is true, symbol names with invalid characters will be printed in quotes.
 
bool UseDataRegionDirectives = false
 This is true if data region markers should be printed as ".data_region/.end_data_region" directives.
 
bool UseDotAlignForAlignment = false
 True if .align is to be used for alignment.
 
bool HasLEB128Directives = true
 True if the target supports LEB128 directives.
 
bool PPCUseFullRegisterNames = false
 True if full register names are printed.
 
const charZeroDirective
 This should be set to the directive used to get some number of zero (and non-zero if supported by the directive) bytes emitted to the current section.
 
bool ZeroDirectiveSupportsNonZeroValue = true
 This should be set to true if the zero directive supports a value to emit other than zero.
 
const charAsciiDirective
 This directive allows emission of an ascii string with the standard C escape characters embedded into it.
 
const charAscizDirective
 If not null, this allows for special handling of zero terminated strings on this target.
 
const charByteListDirective = nullptr
 This directive accepts a comma-separated list of bytes for emission as a string of bytes.
 
const charPlainStringDirective = nullptr
 This directive allows emission of a zero-terminated ascii string without the standard C escape characters embedded into it.
 
AsmCharLiteralSyntax CharacterLiteralSyntax = ACLS_Unknown
 Form used for character literals in the assembly syntax.
 
const charData8bitsDirective
 These directives are used to output some unit of integer data to the current section.
 
const charData16bitsDirective
 
const charData32bitsDirective
 
const charData64bitsDirective
 
bool SupportsSignedData = true
 True if data directives support signed values.
 
const charGPRel64Directive = nullptr
 If non-null, a directive that is used to emit a word which should be relocated as a 64-bit GP-relative offset, e.g.
 
const charGPRel32Directive = nullptr
 If non-null, a directive that is used to emit a word which should be relocated as a 32-bit GP-relative offset, e.g.
 
const charDTPRel32Directive = nullptr
 If non-null, directives that are used to emit a word/dword which should be relocated as a 32/64-bit DTP/TP-relative offset, e.g.
 
const charDTPRel64Directive = nullptr
 
const charTPRel32Directive = nullptr
 
const charTPRel64Directive = nullptr
 
bool SunStyleELFSectionSwitchSyntax = false
 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.
 
bool UsesELFSectionDirectiveForBSS = false
 This is true if this target uses ELF '.section' directive before the '.bss' one.
 
bool NeedsDwarfSectionOffsetDirective = false
 
bool AlignmentIsInBytes = true
 If this is true (the default) then the asmprinter emits ".align N" directives, where N is the number of bytes to align to.
 
unsigned TextAlignFillValue = 0
 If non-zero, this is used to fill the executable space created as the result of a alignment directive.
 
const charGlobalDirective
 This is the directive used to declare a global entity.
 
bool SetDirectiveSuppressesReloc = false
 True if the expression .long f - g uses a relocation but it can be suppressed by writing a = f - g .long a.
 
bool COMMDirectiveAlignmentIsInBytes = true
 True is .comm's and .lcomms optional alignment is to be specified in bytes instead of log2(n).
 
LCOMM::LCOMMType LCOMMDirectiveAlignmentType = LCOMM::NoAlignment
 Describes if the .lcomm directive for the target supports an alignment argument and how it is interpreted.
 
bool HasBasenameOnlyForFileDirective = true
 True if the target only has basename for .file directive.
 
bool HasPairedDoubleQuoteStringConstants = false
 True if the target represents string constants as mostly raw characters in paired double quotation with paired double quotation marks as the escape mechanism to represent a double quotation mark within the string.
 
bool HasFunctionAlignment = true
 
bool HasDotTypeDotSizeDirective = true
 True if the target has .type and .size directives, this is true for most ELF targets.
 
bool HasSingleParameterDotFile = true
 True if the target has a single parameter .file directive, this is true for ELF targets.
 
bool HasFourStringsDotFile = false
 True if the target has a four strings .file directive, strings separated by comma.
 
bool HasIdentDirective = false
 True if the target has a .ident directive, this is true for ELF targets.
 
bool HasNoDeadStrip = false
 True if this target supports the MachO .no_dead_strip directive.
 
const charWeakDirective
 Used to declare a global as being a weak symbol. Defaults to ".weak".
 
const charWeakRefDirective = nullptr
 This directive, if non-null, is used to declare a global as being a weak undefined symbol.
 
bool HasWeakDefCanBeHiddenDirective = false
 True if we have a directive to declare a global as being a weak defined symbol that can be hidden (unexported).
 
bool AvoidWeakIfComdat = false
 True if we should mark symbols as global instead of weak, for weak*‍/linkonce*, if the symbol has a comdat.
 
MCSymbolAttr HiddenVisibilityAttr = MCSA_Hidden
 This attribute, if not MCSA_Invalid, is used to declare a symbol as having hidden visibility.
 
MCSymbolAttr ExportedVisibilityAttr = MCSA_Exported
 This attribute, if not MCSA_Invalid, is used to declare a symbol as having exported visibility.
 
MCSymbolAttr HiddenDeclarationVisibilityAttr = MCSA_Hidden
 This attribute, if not MCSA_Invalid, is used to declare an undefined symbol as having hidden visibility.
 
MCSymbolAttr ProtectedVisibilityAttr = MCSA_Protected
 This attribute, if not MCSA_Invalid, is used to declare a symbol as having protected visibility.
 
MCSymbolAttr MemtagAttr = MCSA_Memtag
 
bool SupportsDebugInformation = false
 True if target supports emission of debugging information.
 
ExceptionHandling ExceptionsType = ExceptionHandling::None
 Exception handling format for the target. Defaults to None.
 
bool UsesCFIWithoutEH = false
 True if target uses CFI unwind information for other purposes than EH (debugging / sanitizers) when ExceptionsType == ExceptionHandling::None.
 
WinEH::EncodingType WinEHEncodingType = WinEH::EncodingType::Invalid
 Windows exception handling data (.pdata) encoding. Defaults to Invalid.
 
bool DwarfUsesRelocationsAcrossSections = true
 True if Dwarf2 output generally uses relocations for references to other .debug_* sections.
 
bool DwarfFDESymbolsUseAbsDiff = false
 True if DWARF FDE symbol reference relocations should be replaced by an absolute difference.
 
bool UsesDwarfFileAndLocDirectives = true
 True if the target supports generating the DWARF line table through using the .loc/.file directives.
 
bool EnableDwarfFileDirectoryDefault = true
 True if DWARF ‘.file directory’ directive syntax is used by default.
 
bool DwarfSectionSizeRequired = true
 True if the target needs the DWARF section length in the header (if any) of the DWARF section in the assembly file.
 
bool DwarfRegNumForCFI = false
 True if dwarf register numbers are printed instead of symbolic register names in .cfi_* directives.
 
bool UseParensForSymbolVariant = false
 True if target uses parens to indicate the symbol variant instead of .
 
bool UseParensForDollarSignNames = true
 True if the target uses parens for symbol names starting with '$' character to distinguish them from absolute names.
 
bool SupportsExtendedDwarfLocDirective = true
 True if the target supports flags in ".loc" directive, false if only location is allowed.
 
std::vector< MCCFIInstructionInitialFrameState
 
std::pair< int, int > BinutilsVersion = {2, 26}
 
bool UseIntegratedAssembler
 Should we use the integrated assembler? The integrated assembler should be enabled by default (by the constructors) when failing to parse a valid piece of assembly (inline or otherwise) is considered a bug.
 
bool ParseInlineAsmUsingAsmParser
 Use AsmParser to parse inlineAsm when UseIntegratedAssembler is not set.
 
bool PreserveAsmComments
 Preserve Comments in assembly.
 
unsigned CommentColumn = 40
 The column (zero-based) at which asm comments should be printed.
 
bool UseLogicalShr = true
 True if the integrated assembler should interpret 'a >> b' constant expressions as logical rather than arithmetic.
 
bool HasMipsExpressions = false
 
bool UseMotorolaIntegers = false
 
bool NeedsFunctionDescriptors = false
 

Detailed Description

Definition at line 21 of file MCAsmInfoDarwin.h.

Constructor & Destructor Documentation

◆ MCAsmInfoDarwin()

MCAsmInfoDarwin::MCAsmInfoDarwin ( )
explicit

Member Function Documentation

◆ isSectionAtomizableBySymbols()

bool MCAsmInfoDarwin::isSectionAtomizableBySymbols ( const MCSection Section)
static

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