| //===- MC/MCAsmInfoXCOFF.cpp - XCOFF asm properties ------------ *- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "llvm/MC/MCAsmInfoXCOFF.h" | |
| #include "llvm/ADT/StringExtras.h" | |
| #include "llvm/Support/CommandLine.h" | |
| using namespace llvm; | |
| namespace llvm { | |
| extern cl::opt<cl::boolOrDefault> UseLEB128Directives; | |
| } | |
| void MCAsmInfoXCOFF::anchor() {} | |
| MCAsmInfoXCOFF::MCAsmInfoXCOFF() { | |
| IsLittleEndian = false; | |
| HasVisibilityOnlyWithLinkage = true; | |
| HasBasenameOnlyForFileDirective = false; | |
| HasFourStringsDotFile = true; | |
| // For XCOFF, string constant consists of any number of characters enclosed in | |
| // "" (double quotation marks). | |
| HasPairedDoubleQuoteStringConstants = true; | |
| PrivateGlobalPrefix = "L.."; | |
| PrivateLabelPrefix = "L.."; | |
| SupportsQuotedNames = false; | |
| UseDotAlignForAlignment = true; | |
| UsesDwarfFileAndLocDirectives = false; | |
| DwarfSectionSizeRequired = false; | |
| if (UseLEB128Directives == cl::BOU_UNSET) | |
| HasLEB128Directives = false; | |
| ZeroDirective = "\t.space\t"; | |
| ZeroDirectiveSupportsNonZeroValue = false; | |
| AsciiDirective = nullptr; // not supported | |
| AscizDirective = nullptr; // not supported | |
| ByteListDirective = "\t.byte\t"; | |
| PlainStringDirective = "\t.string\t"; | |
| CharacterLiteralSyntax = ACLS_SingleQuotePrefix; | |
| // Use .vbyte for data definition to avoid directives that apply an implicit | |
| // alignment. | |
| Data16bitsDirective = "\t.vbyte\t2, "; | |
| Data32bitsDirective = "\t.vbyte\t4, "; | |
| COMMDirectiveAlignmentIsInBytes = false; | |
| LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; | |
| HasDotTypeDotSizeDirective = false; | |
| UseIntegratedAssembler = false; | |
| ParseInlineAsmUsingAsmParser = true; | |
| NeedsFunctionDescriptors = true; | |
| ExceptionsType = ExceptionHandling::AIX; | |
| } | |
| bool MCAsmInfoXCOFF::isAcceptableChar(char C) const { | |
| // QualName is allowed for a MCSymbolXCOFF, and | |
| // QualName contains '[' and ']'. | |
| if (C == '[' || C == ']') | |
| return true; | |
| // For AIX assembler, symbols may consist of numeric digits, | |
| // underscores, periods, uppercase or lowercase letters, or | |
| // any combination of these. | |
| return isAlnum(C) || C == '_' || C == '.'; | |
| } |