53 if (
C ==
'[' ||
C ==
']')
68void MCSectionXCOFF::printCsectDirective(
raw_ostream &OS)
const {
76 if (Sec.getKind().isText()) {
80 Sec.printCsectDirective(OS);
84 if (Sec.getKind().isReadOnly()) {
88 Sec.printCsectDirective(OS);
92 if (Sec.getKind().isReadOnlyWithRel()) {
97 "Unexepected storage-mapping class for ReadOnlyWithRel kind");
98 Sec.printCsectDirective(OS);
103 if (Sec.getKind().isThreadData()) {
107 Sec.printCsectDirective(OS);
111 if (Sec.getKind().isData()) {
112 switch (Sec.getMappingClass()) {
116 Sec.printCsectDirective(OS);
130 if (Sec.isCsect() && Sec.getMappingClass() ==
XCOFF::XMC_TD) {
133 if (Sec.getKind().isCommon() && !Sec.getKind().isBSSLocal())
136 assert(Sec.getKind().isBSS() &&
"Unexpected section kind for toc-data");
137 Sec.printCsectDirective(OS);
146 "Generated a storage-mapping class for a common/bss/tbss csect we "
148 "understand how to switch to.");
153 assert((Sec.getKind().isBSSLocal() || Sec.getKind().isCommon() ||
154 Sec.getKind().isThreadBSS()) &&
155 "wrong symbol type for .bss/.tbss csect");
164 if (Sec.getKind().isThreadBSS()) {
165 Sec.printCsectDirective(OS);
170 if (Sec.getKind().isMetadata() && Sec.isDwarfSect()) {
171 OS <<
"\n\t.dwsect " <<
format(
"0x%" PRIx32, *Sec.getDwarfSubtypeFlags())
173 OS << Sec.getName() <<
':' <<
'\n';
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
void printSwitchToSection(const MCSection &, uint32_t, const Triple &, raw_ostream &) const final
bool useCodeAlign(const MCSection &Sec) const final
bool isAcceptableChar(char C) const override
Return true if C is an acceptable character inside a symbol name.
const char * Data16bitsDirective
const char * AsciiDirective
This directive allows emission of an ascii string with the standard C escape characters embedded into...
ExceptionHandling ExceptionsType
Exception handling format for the target. Defaults to None.
StringRef PrivateGlobalPrefix
This prefix is used for globals like constant pool entries that are completely private to the ....
const char * Data32bitsDirective
LCOMM::LCOMMType LCOMMDirectiveAlignmentType
Describes if the .lcomm directive for the target supports an alignment argument and how it is interpr...
StringRef PrivateLabelPrefix
This prefix is used for labels for basic blocks.
bool HasDotTypeDotSizeDirective
True if the target has .type and .size directives, this is true for most ELF targets.
bool ParseInlineAsmUsingAsmParser
Use AsmParser to parse inlineAsm when UseIntegratedAssembler is not set.
bool COMMDirectiveAlignmentIsInBytes
True is .comm's and .lcomms optional alignment is to be specified in bytes instead of log2(n).
AsmCharLiteralSyntax CharacterLiteralSyntax
Form used for character literals in the assembly syntax.
const char * ZeroDirective
This should be set to the directive used to get some number of zero (and non-zero if supported by the...
bool SupportsQuotedNames
If this is true, symbol names with invalid characters will be printed in quotes.
const char * AscizDirective
If not null, this allows for special handling of zero terminated strings on this target.
bool IsLittleEndian
True if target is little endian. Default is true.
@ ACLS_SingleQuotePrefix
Unknown; character literals not used by LLVM for this target.
bool HasLEB128Directives
True if the target supports LEB128 directives.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
StringRef getName() const
getName - Get the symbol name.
Triple - Helper class for working with autoconf configuration names.
This class implements an extremely fast bulk output stream that can only output to a stream.
@ C
The default llvm calling convention, compatible with C.
@ XMC_TE
Symbol mapped at the end of TOC.
@ XMC_TC0
TOC Anchor for TOC Addressability.
@ XMC_DS
Descriptor csect.
@ XMC_TL
Initialized thread-local variable.
@ XMC_RO
Read Only Constant.
@ XMC_TD
Scalar data item in the TOC.
@ XMC_UL
Uninitialized thread-local variable.
@ XMC_BS
BSS class (uninitialized static internal)
@ XMC_TC
General TOC item.
@ XTY_CM
Common csect definition. For uninitialized storage.
This is an optimization pass for GlobalISel generic memory operations.
@ AIX
AIX Exception Handling.
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)
bool isAlnum(char C)
Checks whether character C is either a decimal digit or an uppercase or lowercase letter as classifie...
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
cl::opt< cl::boolOrDefault > UseLEB128Directives("use-leb128-directives", cl::Hidden, cl::desc("Disable the usage of LEB128 directives, and generate .byte instead."), cl::init(cl::BOU_UNSET))
unsigned Log2(Align A)
Returns the log2 of the alignment.