LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MCAsmInfo.h
Go to the documentation of this file.
1 //===-- llvm/MC/MCAsmInfo.h - Asm info --------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains a class to be used as the basis for target specific
11 // asm writers. This class primarily takes care of global printing constants,
12 // which are used in very similar ways across all targets.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_MC_MCASMINFO_H
17 #define LLVM_MC_MCASMINFO_H
18 
19 #include "llvm/MC/MCDirectives.h"
20 #include "llvm/MC/MCDwarf.h"
22 #include <cassert>
23 #include <vector>
24 
25 namespace llvm {
26  class MCExpr;
27  class MCSection;
28  class MCStreamer;
29  class MCSymbol;
30  class MCContext;
31 
32  namespace ExceptionHandling {
34  }
35 
36  namespace LCOMM {
38  }
39 
40  /// MCAsmInfo - This class is intended to be used as a base class for asm
41  /// properties and features specific to the target.
42  class MCAsmInfo {
43  protected:
44  //===------------------------------------------------------------------===//
45  // Properties to be set by the target writer, used to configure asm printer.
46  //
47 
48  /// PointerSize - Pointer size in bytes.
49  /// Default is 4.
50  unsigned PointerSize;
51 
52  /// CalleeSaveStackSlotSize - Size of the stack slot reserved for
53  /// callee-saved registers, in bytes.
54  /// Default is same as pointer size.
56 
57  /// IsLittleEndian - True if target is little endian.
58  /// Default is true.
60 
61  /// StackGrowsUp - True if target stack grow up.
62  /// Default is false.
64 
65  /// HasSubsectionsViaSymbols - True if this target has the MachO
66  /// .subsections_via_symbols directive.
67  bool HasSubsectionsViaSymbols; // Default is false.
68 
69  /// HasMachoZeroFillDirective - True if this is a MachO target that supports
70  /// the macho-specific .zerofill directive for emitting BSS Symbols.
71  bool HasMachoZeroFillDirective; // Default is false.
72 
73  /// HasMachoTBSSDirective - True if this is a MachO target that supports
74  /// the macho-specific .tbss directive for emitting thread local BSS Symbols
75  bool HasMachoTBSSDirective; // Default is false.
76 
77  /// HasStaticCtorDtorReferenceInStaticMode - True if the compiler should
78  /// emit a ".reference .constructors_used" or ".reference .destructors_used"
79  /// directive after the a static ctor/dtor list. This directive is only
80  /// emitted in Static relocation model.
81  bool HasStaticCtorDtorReferenceInStaticMode; // Default is false.
82 
83  /// LinkerRequiresNonEmptyDwarfLines - True if the linker has a bug and
84  /// requires that the debug_line section be of a minimum size. In practice
85  /// such a linker requires a non empty line sequence if a file is present.
86  bool LinkerRequiresNonEmptyDwarfLines; // Default to false.
87 
88  /// MaxInstLength - This is the maximum possible length of an instruction,
89  /// which is needed to compute the size of an inline asm.
90  unsigned MaxInstLength; // Defaults to 4.
91 
92  /// MinInstAlignment - Every possible instruction length is a multiple of
93  /// this value. Factored out in .debug_frame and .debug_line.
94  unsigned MinInstAlignment; // Defaults to 1.
95 
96  /// DollarIsPC - The '$' token, when not referencing an identifier or
97  /// constant, refers to the current PC.
98  bool DollarIsPC; // Defaults to false.
99 
100  /// SeparatorString - This string, if specified, is used to separate
101  /// instructions from each other when on the same line.
102  const char *SeparatorString; // Defaults to ';'
103 
104  /// CommentColumn - This indicates the comment num (zero-based) at
105  /// which asm comments should be printed.
106  unsigned CommentColumn; // Defaults to 40
107 
108  /// CommentString - This indicates the comment character used by the
109  /// assembler.
110  const char *CommentString; // Defaults to "#"
111 
112  /// LabelSuffix - This is appended to emitted labels.
113  const char *LabelSuffix; // Defaults to ":"
114 
115  /// LabelSuffix - This is appended to emitted labels.
116  const char *DebugLabelSuffix; // Defaults to ":"
117 
118  /// GlobalPrefix - If this is set to a non-empty string, it is prepended
119  /// onto all global symbols. This is often used for "_" or ".".
120  const char *GlobalPrefix; // Defaults to ""
121 
122  /// PrivateGlobalPrefix - This prefix is used for globals like constant
123  /// pool entries that are completely private to the .s file and should not
124  /// have names in the .o file. This is often "." or "L".
125  const char *PrivateGlobalPrefix; // Defaults to "."
126 
127  /// LinkerPrivateGlobalPrefix - This prefix is used for symbols that should
128  /// be passed through the assembler but be removed by the linker. This
129  /// is "l" on Darwin, currently used for some ObjC metadata.
130  const char *LinkerPrivateGlobalPrefix; // Defaults to ""
131 
132  /// InlineAsmStart/End - If these are nonempty, they contain a directive to
133  /// emit before and after an inline assembly statement.
134  const char *InlineAsmStart; // Defaults to "#APP\n"
135  const char *InlineAsmEnd; // Defaults to "#NO_APP\n"
136 
137  /// Code16Directive, Code32Directive, Code64Directive - These are assembly
138  /// directives that tells the assembler to interpret the following
139  /// instructions differently.
140  const char *Code16Directive; // Defaults to ".code16"
141  const char *Code32Directive; // Defaults to ".code32"
142  const char *Code64Directive; // Defaults to ".code64"
143 
144  /// AssemblerDialect - Which dialect of an assembler variant to use.
145  unsigned AssemblerDialect; // Defaults to 0
146 
147  /// \brief This is true if the assembler allows @ characters in symbol
148  /// names. Defaults to false.
150 
151  /// UseDataRegionDirectives - This is true if data region markers should
152  /// be printed as ".data_region/.end_data_region" directives. If false,
153  /// use "$d/$a" labels instead.
155 
156  //===--- Data Emission Directives -------------------------------------===//
157 
158  /// ZeroDirective - this should be set to the directive used to get some
159  /// number of zero bytes emitted to the current section. Common cases are
160  /// "\t.zero\t" and "\t.space\t". If this is set to null, the
161  /// Data*bitsDirective's will be used to emit zero bytes.
162  const char *ZeroDirective; // Defaults to "\t.zero\t"
163 
164  /// AsciiDirective - This directive allows emission of an ascii string with
165  /// the standard C escape characters embedded into it.
166  const char *AsciiDirective; // Defaults to "\t.ascii\t"
167 
168  /// AscizDirective - If not null, this allows for special handling of
169  /// zero terminated strings on this target. This is commonly supported as
170  /// ".asciz". If a target doesn't support this, it can be set to null.
171  const char *AscizDirective; // Defaults to "\t.asciz\t"
172 
173  /// DataDirectives - These directives are used to output some unit of
174  /// integer data to the current section. If a data directive is set to
175  /// null, smaller data directives will be used to emit the large sizes.
176  const char *Data8bitsDirective; // Defaults to "\t.byte\t"
177  const char *Data16bitsDirective; // Defaults to "\t.short\t"
178  const char *Data32bitsDirective; // Defaults to "\t.long\t"
179  const char *Data64bitsDirective; // Defaults to "\t.quad\t"
180 
181  /// GPRel64Directive - if non-null, a directive that is used to emit a word
182  /// which should be relocated as a 64-bit GP-relative offset, e.g. .gpdword
183  /// on Mips.
184  const char *GPRel64Directive; // Defaults to NULL.
185 
186  /// GPRel32Directive - if non-null, a directive that is used to emit a word
187  /// which should be relocated as a 32-bit GP-relative offset, e.g. .gpword
188  /// on Mips or .gprel32 on Alpha.
189  const char *GPRel32Directive; // Defaults to NULL.
190 
191  /// SunStyleELFSectionSwitchSyntax - This is true if this target uses "Sun
192  /// Style" syntax for section switching ("#alloc,#write" etc) instead of the
193  /// normal ELF syntax (,"a,w") in .section directives.
194  bool SunStyleELFSectionSwitchSyntax; // Defaults to false.
195 
196  /// UsesELFSectionDirectiveForBSS - This is true if this target uses ELF
197  /// '.section' directive before the '.bss' one. It's used for PPC/Linux
198  /// which doesn't support the '.bss' directive only.
199  bool UsesELFSectionDirectiveForBSS; // Defaults to false.
200 
201  /// HasMicrosoftFastStdCallMangling - True if this target uses microsoft
202  /// style mangling for functions with X86_StdCall/X86_FastCall calling
203  /// convention.
204  bool HasMicrosoftFastStdCallMangling; // Defaults to false.
205 
207 
208  //===--- Alignment Information ----------------------------------------===//
209 
210  /// AlignDirective - The directive used to emit round up to an alignment
211  /// boundary.
212  ///
213  const char *AlignDirective; // Defaults to "\t.align\t"
214 
215  /// AlignmentIsInBytes - If this is true (the default) then the asmprinter
216  /// emits ".align N" directives, where N is the number of bytes to align to.
217  /// Otherwise, it emits ".align log2(N)", e.g. 3 to align to an 8 byte
218  /// boundary.
219  bool AlignmentIsInBytes; // Defaults to true
220 
221  /// TextAlignFillValue - If non-zero, this is used to fill the executable
222  /// space created as the result of a alignment directive.
223  unsigned TextAlignFillValue; // Defaults to 0
224 
225  //===--- Global Variable Emission Directives --------------------------===//
226 
227  /// GlobalDirective - This is the directive used to declare a global entity.
228  ///
229  const char *GlobalDirective; // Defaults to NULL.
230 
231  /// HasSetDirective - True if the assembler supports the .set directive.
232  bool HasSetDirective; // Defaults to true.
233 
234  /// HasAggressiveSymbolFolding - False if the assembler requires that we use
235  /// Lc = a - b
236  /// .long Lc
237  /// instead of
238  /// .long a - b
239  bool HasAggressiveSymbolFolding; // Defaults to true.
240 
241  /// COMMDirectiveAlignmentIsInBytes - True is .comm's and .lcomms optional
242  /// alignment is to be specified in bytes instead of log2(n).
243  bool COMMDirectiveAlignmentIsInBytes; // Defaults to true;
244 
245  /// LCOMMDirectiveAlignment - Describes if the .lcomm directive for the
246  /// target supports an alignment argument and how it is interpreted.
247  LCOMM::LCOMMType LCOMMDirectiveAlignmentType; // Defaults to NoAlignment.
248 
249  /// HasDotTypeDotSizeDirective - True if the target has .type and .size
250  /// directives, this is true for most ELF targets.
251  bool HasDotTypeDotSizeDirective; // Defaults to true.
252 
253  /// HasSingleParameterDotFile - True if the target has a single parameter
254  /// .file directive, this is true for ELF targets.
255  bool HasSingleParameterDotFile; // Defaults to true.
256 
257  /// hasIdentDirective - True if the target has a .ident directive, this is
258  /// true for ELF targets.
259  bool HasIdentDirective; // Defaults to false.
260 
261  /// HasNoDeadStrip - True if this target supports the MachO .no_dead_strip
262  /// directive.
263  bool HasNoDeadStrip; // Defaults to false.
264 
265  /// WeakRefDirective - This directive, if non-null, is used to declare a
266  /// global as being a weak undefined symbol.
267  const char *WeakRefDirective; // Defaults to NULL.
268 
269  /// WeakDefDirective - This directive, if non-null, is used to declare a
270  /// global as being a weak defined symbol.
271  const char *WeakDefDirective; // Defaults to NULL.
272 
273  /// LinkOnceDirective - This directive, if non-null is used to declare a
274  /// global as being a weak defined symbol. This is used on cygwin/mingw.
275  const char *LinkOnceDirective; // Defaults to NULL.
276 
277  /// HiddenVisibilityAttr - This attribute, if not MCSA_Invalid, is used to
278  /// declare a symbol as having hidden visibility.
279  MCSymbolAttr HiddenVisibilityAttr; // Defaults to MCSA_Hidden.
280 
281  /// HiddenDeclarationVisibilityAttr - This attribute, if not MCSA_Invalid,
282  /// is used to declare an undefined symbol as having hidden visibility.
283  MCSymbolAttr HiddenDeclarationVisibilityAttr; // Defaults to MCSA_Hidden.
284 
285 
286  /// ProtectedVisibilityAttr - This attribute, if not MCSA_Invalid, is used
287  /// to declare a symbol as having protected visibility.
288  MCSymbolAttr ProtectedVisibilityAttr; // Defaults to MCSA_Protected
289 
290  //===--- Dwarf Emission Directives -----------------------------------===//
291 
292  /// HasLEB128 - True if target asm supports leb128 directives.
293  bool HasLEB128; // Defaults to false.
294 
295  /// SupportsDebugInformation - True if target supports emission of debugging
296  /// information.
297  bool SupportsDebugInformation; // Defaults to false.
298 
299  /// SupportsExceptionHandling - True if target supports exception handling.
301 
302  /// DwarfUsesRelocationsAcrossSections - True if Dwarf2 output generally
303  /// uses relocations for references to other .debug_* sections.
305 
306  /// DwarfRegNumForCFI - True if dwarf register numbers are printed
307  /// instead of symbolic register names in .cfi_* directives.
308  bool DwarfRegNumForCFI; // Defaults to false;
309 
310  //===--- Prologue State ----------------------------------------------===//
311 
312  std::vector<MCCFIInstruction> InitialFrameState;
313 
314  public:
315  explicit MCAsmInfo();
316  virtual ~MCAsmInfo();
317 
318  // FIXME: move these methods to DwarfPrinter when the JIT stops using them.
319  static unsigned getSLEB128Size(int64_t Value);
320  static unsigned getULEB128Size(uint64_t Value);
321 
322  /// getPointerSize - Get the pointer size in bytes.
323  unsigned getPointerSize() const {
324  return PointerSize;
325  }
326 
327  /// getCalleeSaveStackSlotSize - Get the callee-saved register stack slot
328  /// size in bytes.
329  unsigned getCalleeSaveStackSlotSize() const {
331  }
332 
333  /// isLittleEndian - True if the target is little endian.
334  bool isLittleEndian() const {
335  return IsLittleEndian;
336  }
337 
338  /// isStackGrowthDirectionUp - True if target stack grow up.
340  return StackGrowsUp;
341  }
342 
344 
345  // Data directive accessors.
346  //
347  const char *getData8bitsDirective() const {
348  return Data8bitsDirective;
349  }
350  const char *getData16bitsDirective() const {
351  return Data16bitsDirective;
352  }
353  const char *getData32bitsDirective() const {
354  return Data32bitsDirective;
355  }
356  const char *getData64bitsDirective() const {
357  return Data64bitsDirective;
358  }
359  const char *getGPRel64Directive() const { return GPRel64Directive; }
360  const char *getGPRel32Directive() const { return GPRel32Directive; }
361 
362  /// getNonexecutableStackSection - Targets can implement this method to
363  /// specify a section to switch to if the translation unit doesn't have any
364  /// trampolines that require an executable stack.
366  return 0;
367  }
368 
369  virtual const MCExpr *
371  unsigned Encoding,
372  MCStreamer &Streamer) const;
373 
374  const MCExpr *
375  getExprForFDESymbol(const MCSymbol *Sym,
376  unsigned Encoding,
377  MCStreamer &Streamer) const;
378 
381  }
382 
385  }
386 
389  }
390 
393  }
394 
395  // Accessors.
396  //
401  }
404  }
405  unsigned getMaxInstLength() const {
406  return MaxInstLength;
407  }
408  unsigned getMinInstAlignment() const {
409  return MinInstAlignment;
410  }
411  bool getDollarIsPC() const {
412  return DollarIsPC;
413  }
414  const char *getSeparatorString() const {
415  return SeparatorString;
416  }
417  unsigned getCommentColumn() const {
418  return CommentColumn;
419  }
420  const char *getCommentString() const {
421  return CommentString;
422  }
423  const char *getLabelSuffix() const {
424  return LabelSuffix;
425  }
426 
427  const char *getDebugLabelSuffix() const {
428  return DebugLabelSuffix;
429  }
430 
431  const char *getGlobalPrefix() const {
432  return GlobalPrefix;
433  }
434  const char *getPrivateGlobalPrefix() const {
435  return PrivateGlobalPrefix;
436  }
437  const char *getLinkerPrivateGlobalPrefix() const {
439  }
440  const char *getInlineAsmStart() const {
441  return InlineAsmStart;
442  }
443  const char *getInlineAsmEnd() const {
444  return InlineAsmEnd;
445  }
446  const char *getCode16Directive() const {
447  return Code16Directive;
448  }
449  const char *getCode32Directive() const {
450  return Code32Directive;
451  }
452  const char *getCode64Directive() const {
453  return Code64Directive;
454  }
455  unsigned getAssemblerDialect() const {
456  return AssemblerDialect;
457  }
458  bool doesAllowAtInName() const {
459  return AllowAtInName;
460  }
463  }
464  const char *getZeroDirective() const {
465  return ZeroDirective;
466  }
467  const char *getAsciiDirective() const {
468  return AsciiDirective;
469  }
470  const char *getAscizDirective() const {
471  return AscizDirective;
472  }
473  const char *getAlignDirective() const {
474  return AlignDirective;
475  }
476  bool getAlignmentIsInBytes() const {
477  return AlignmentIsInBytes;
478  }
479  unsigned getTextAlignFillValue() const {
480  return TextAlignFillValue;
481  }
482  const char *getGlobalDirective() const {
483  return GlobalDirective;
484  }
485  bool hasSetDirective() const { return HasSetDirective; }
488  }
491  }
494  }
497  bool hasIdentDirective() const { return HasIdentDirective; }
498  bool hasNoDeadStrip() const { return HasNoDeadStrip; }
499  const char *getWeakRefDirective() const { return WeakRefDirective; }
500  const char *getWeakDefDirective() const { return WeakDefDirective; }
501  const char *getLinkOnceDirective() const { return LinkOnceDirective; }
502 
506  }
509  }
510  bool hasLEB128() const {
511  return HasLEB128;
512  }
515  }
518  }
520  return ExceptionsType;
521  }
523  return
527  }
530  }
531  bool useDwarfRegNumForCFI() const {
532  return DwarfRegNumForCFI;
533  }
534 
536  InitialFrameState.push_back(Inst);
537  }
538 
539  const std::vector<MCCFIInstruction> &getInitialFrameState() const {
540  return InitialFrameState;
541  }
542  };
543 }
544 
545 #endif
bool HasSingleParameterDotFile
Definition: MCAsmInfo.h:255
bool isExceptionHandlingDwarf() const
Definition: MCAsmInfo.h:522
const char * Code16Directive
Definition: MCAsmInfo.h:140
LCOMM::LCOMMType LCOMMDirectiveAlignmentType
Definition: MCAsmInfo.h:247
bool doesSupportDebugInformation() const
Definition: MCAsmInfo.h:513
unsigned getAssemblerDialect() const
Definition: MCAsmInfo.h:455
unsigned TextAlignFillValue
Definition: MCAsmInfo.h:223
bool getLinkerRequiresNonEmptyDwarfLines() const
Definition: MCAsmInfo.h:402
bool useDwarfRegNumForCFI() const
Definition: MCAsmInfo.h:531
const char * getData8bitsDirective() const
Definition: MCAsmInfo.h:347
bool HasSubsectionsViaSymbols
Definition: MCAsmInfo.h:67
bool hasIdentDirective() const
Definition: MCAsmInfo.h:497
bool doesAllowAtInName() const
Definition: MCAsmInfo.h:458
bool DwarfRegNumForCFI
Definition: MCAsmInfo.h:308
unsigned getTextAlignFillValue() const
Definition: MCAsmInfo.h:479
const char * getAlignDirective() const
Definition: MCAsmInfo.h:473
const char * GlobalPrefix
Definition: MCAsmInfo.h:120
bool DwarfUsesRelocationsAcrossSections
Definition: MCAsmInfo.h:304
const char * getPrivateGlobalPrefix() const
Definition: MCAsmInfo.h:434
const char * Data64bitsDirective
Definition: MCAsmInfo.h:179
const char * ZeroDirective
Definition: MCAsmInfo.h:162
bool IsLittleEndian
Definition: MCAsmInfo.h:59
const char * GlobalDirective
Definition: MCAsmInfo.h:229
unsigned CalleeSaveStackSlotSize
Definition: MCAsmInfo.h:55
unsigned AssemblerDialect
AssemblerDialect - Which dialect of an assembler variant to use.
Definition: MCAsmInfo.h:145
const char * getLinkerPrivateGlobalPrefix() const
Definition: MCAsmInfo.h:437
ExceptionHandling::ExceptionsType getExceptionHandlingType() const
Definition: MCAsmInfo.h:519
ExceptionHandling::ExceptionsType ExceptionsType
SupportsExceptionHandling - True if target supports exception handling.
Definition: MCAsmInfo.h:300
const char * getWeakRefDirective() const
Definition: MCAsmInfo.h:499
LCOMM::LCOMMType getLCOMMDirectiveAlignmentType() const
Definition: MCAsmInfo.h:492
bool HasDotTypeDotSizeDirective
Definition: MCAsmInfo.h:251
const char * AlignDirective
Definition: MCAsmInfo.h:213
const char * AsciiDirective
Definition: MCAsmInfo.h:166
bool AlignmentIsInBytes
Definition: MCAsmInfo.h:219
virtual const MCSection * getNonexecutableStackSection(MCContext &Ctx) const
Definition: MCAsmInfo.h:365
const char * PrivateGlobalPrefix
Definition: MCAsmInfo.h:125
const char * SeparatorString
Definition: MCAsmInfo.h:102
bool hasMachoTBSSDirective() const
Definition: MCAsmInfo.h:398
bool HasNoDeadStrip
Definition: MCAsmInfo.h:263
MCSymbolAttr getHiddenVisibilityAttr() const
Definition: MCAsmInfo.h:503
virtual const MCExpr * getExprForPersonalitySymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
Definition: MCAsmInfo.cpp:121
bool UsesELFSectionDirectiveForBSS
Definition: MCAsmInfo.h:199
static unsigned getSLEB128Size(int64_t Value)
Definition: MCAsmInfo.cpp:106
const char * Data8bitsDirective
Definition: MCAsmInfo.h:176
bool HasAggressiveSymbolFolding
Definition: MCAsmInfo.h:239
unsigned getCommentColumn() const
Definition: MCAsmInfo.h:417
const std::vector< MCCFIInstruction > & getInitialFrameState() const
Definition: MCAsmInfo.h:539
bool hasMachoZeroFillDirective() const
Definition: MCAsmInfo.h:397
bool StackGrowsUp
Definition: MCAsmInfo.h:63
bool hasSetDirective() const
Definition: MCAsmInfo.h:485
const char * getInlineAsmEnd() const
Definition: MCAsmInfo.h:443
bool isLittleEndian() const
isLittleEndian - True if the target is little endian.
Definition: MCAsmInfo.h:334
bool HasMicrosoftFastStdCallMangling
Definition: MCAsmInfo.h:204
bool SunStyleELFSectionSwitchSyntax
Definition: MCAsmInfo.h:194
const char * getLabelSuffix() const
Definition: MCAsmInfo.h:423
MCSymbolAttr HiddenVisibilityAttr
Definition: MCAsmInfo.h:279
const char * getCode16Directive() const
Definition: MCAsmInfo.h:446
void addInitialFrameState(const MCCFIInstruction &Inst)
Definition: MCAsmInfo.h:535
const char * getCode32Directive() const
Definition: MCAsmInfo.h:449
const char * Code32Directive
Definition: MCAsmInfo.h:141
const char * CommentString
Definition: MCAsmInfo.h:110
const char * AscizDirective
Definition: MCAsmInfo.h:171
bool doesSupportExceptionHandling() const
Definition: MCAsmInfo.h:516
const char * InlineAsmStart
Definition: MCAsmInfo.h:134
bool needsDwarfSectionOffsetDirective() const
Definition: MCAsmInfo.h:391
bool HasIdentDirective
Definition: MCAsmInfo.h:259
const char * GPRel64Directive
Definition: MCAsmInfo.h:184
MCSymbolAttr getHiddenDeclarationVisibilityAttr() const
Definition: MCAsmInfo.h:504
const char * DebugLabelSuffix
LabelSuffix - This is appended to emitted labels.
Definition: MCAsmInfo.h:116
bool HasSetDirective
HasSetDirective - True if the assembler supports the .set directive.
Definition: MCAsmInfo.h:232
const char * getAsciiDirective() const
Definition: MCAsmInfo.h:467
MCSymbolAttr getProtectedVisibilityAttr() const
Definition: MCAsmInfo.h:507
bool COMMDirectiveAlignmentIsInBytes
Definition: MCAsmInfo.h:243
unsigned PointerSize
Definition: MCAsmInfo.h:50
bool AllowAtInName
This is true if the assembler allows @ characters in symbol names. Defaults to false.
Definition: MCAsmInfo.h:149
bool SupportsDebugInformation
Definition: MCAsmInfo.h:297
bool usesSunStyleELFSectionSwitchSyntax() const
Definition: MCAsmInfo.h:379
const char * getData16bitsDirective() const
Definition: MCAsmInfo.h:350
const char * getData32bitsDirective() const
Definition: MCAsmInfo.h:353
const char * WeakRefDirective
Definition: MCAsmInfo.h:267
const char * WeakDefDirective
Definition: MCAsmInfo.h:271
const char * Data16bitsDirective
Definition: MCAsmInfo.h:177
const char * getData64bitsDirective() const
Definition: MCAsmInfo.h:356
const char * getCode64Directive() const
Definition: MCAsmInfo.h:452
const char * getLinkOnceDirective() const
Definition: MCAsmInfo.h:501
const char * getDebugLabelSuffix() const
Definition: MCAsmInfo.h:427
bool LinkerRequiresNonEmptyDwarfLines
Definition: MCAsmInfo.h:86
unsigned getPointerSize() const
getPointerSize - Get the pointer size in bytes.
Definition: MCAsmInfo.h:323
bool usesELFSectionDirectiveForBSS() const
Definition: MCAsmInfo.h:383
bool HasLEB128
HasLEB128 - True if target asm supports leb128 directives.
Definition: MCAsmInfo.h:293
unsigned getMinInstAlignment() const
Definition: MCAsmInfo.h:408
bool doesSupportDataRegionDirectives() const
Definition: MCAsmInfo.h:461
bool hasMicrosoftFastStdCallMangling() const
Definition: MCAsmInfo.h:387
const char * LabelSuffix
LabelSuffix - This is appended to emitted labels.
Definition: MCAsmInfo.h:113
const char * getGlobalPrefix() const
Definition: MCAsmInfo.h:431
bool HasMachoZeroFillDirective
Definition: MCAsmInfo.h:71
bool getDollarIsPC() const
Definition: MCAsmInfo.h:411
bool HasStaticCtorDtorReferenceInStaticMode
Definition: MCAsmInfo.h:81
std::vector< MCCFIInstruction > InitialFrameState
Definition: MCAsmInfo.h:312
virtual ~MCAsmInfo()
Definition: MCAsmInfo.cpp:93
const char * InlineAsmEnd
Definition: MCAsmInfo.h:135
bool HasMachoTBSSDirective
Definition: MCAsmInfo.h:75
const char * getGPRel64Directive() const
Definition: MCAsmInfo.h:359
MCSymbolAttr
Definition: MCDirectives.h:19
unsigned MinInstAlignment
Definition: MCAsmInfo.h:94
const char * getGPRel32Directive() const
Definition: MCAsmInfo.h:360
const char * Data32bitsDirective
Definition: MCAsmInfo.h:178
const char * GPRel32Directive
Definition: MCAsmInfo.h:189
bool hasSingleParameterDotFile() const
Definition: MCAsmInfo.h:496
const char * getWeakDefDirective() const
Definition: MCAsmInfo.h:500
unsigned CommentColumn
Definition: MCAsmInfo.h:106
bool getCOMMDirectiveAlignmentIsInBytes() const
Definition: MCAsmInfo.h:489
bool getAlignmentIsInBytes() const
Definition: MCAsmInfo.h:476
bool hasStaticCtorDtorReferenceInStaticMode() const
Definition: MCAsmInfo.h:399
MCSymbolAttr ProtectedVisibilityAttr
Definition: MCAsmInfo.h:288
bool hasNoDeadStrip() const
Definition: MCAsmInfo.h:498
bool isStackGrowthDirectionUp() const
isStackGrowthDirectionUp - True if target stack grow up.
Definition: MCAsmInfo.h:339
const char * getSeparatorString() const
Definition: MCAsmInfo.h:414
unsigned getCalleeSaveStackSlotSize() const
Definition: MCAsmInfo.h:329
bool UseDataRegionDirectives
Definition: MCAsmInfo.h:154
bool hasAggressiveSymbolFolding() const
Definition: MCAsmInfo.h:486
bool NeedsDwarfSectionOffsetDirective
Definition: MCAsmInfo.h:206
const char * LinkOnceDirective
Definition: MCAsmInfo.h:275
MCSymbolAttr HiddenDeclarationVisibilityAttr
Definition: MCAsmInfo.h:283
const MCExpr * getExprForFDESymbol(const MCSymbol *Sym, unsigned Encoding, MCStreamer &Streamer) const
Definition: MCAsmInfo.cpp:128
static unsigned getULEB128Size(uint64_t Value)
Definition: MCAsmInfo.cpp:97
LLVM Value Representation.
Definition: Value.h:66
unsigned getMaxInstLength() const
Definition: MCAsmInfo.h:405
bool hasSubsectionsViaSymbols() const
Definition: MCAsmInfo.h:343
const char * getZeroDirective() const
Definition: MCAsmInfo.h:464
const char * getAscizDirective() const
Definition: MCAsmInfo.h:470
const char * getGlobalDirective() const
Definition: MCAsmInfo.h:482
const char * getInlineAsmStart() const
Definition: MCAsmInfo.h:440
bool hasLEB128() const
Definition: MCAsmInfo.h:510
bool hasDotTypeDotSizeDirective() const
Definition: MCAsmInfo.h:495
const char * getCommentString() const
Definition: MCAsmInfo.h:420
const char * LinkerPrivateGlobalPrefix
Definition: MCAsmInfo.h:130
bool doesDwarfUseRelocationsAcrossSections() const
Definition: MCAsmInfo.h:528
const char * Code64Directive
Definition: MCAsmInfo.h:142
unsigned MaxInstLength
Definition: MCAsmInfo.h:90