1 //===- MC/MCAsmInfoXCOFF.cpp - XCOFF asm properties ------------ *- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/MC/MCAsmInfoXCOFF.h" 10 #include "llvm/ADT/StringExtras.h" 11 12 using namespace llvm; 13 14 void MCAsmInfoXCOFF::anchor() {} 15 16 MCAsmInfoXCOFF::MCAsmInfoXCOFF() { 17 IsLittleEndian = false; 18 HasVisibilityOnlyWithLinkage = true; 19 PrivateGlobalPrefix = "L.."; 20 PrivateLabelPrefix = "L.."; 21 SupportsQuotedNames = false; 22 UseDotAlignForAlignment = true; 23 ZeroDirective = "\t.space\t"; 24 ZeroDirectiveSupportsNonZeroValue = false; 25 AsciiDirective = nullptr; // not supported 26 AscizDirective = nullptr; // not supported 27 28 // Use .vbyte for data definition to avoid directives that apply an implicit 29 // alignment. 30 Data16bitsDirective = "\t.vbyte\t2, "; 31 Data32bitsDirective = "\t.vbyte\t4, "; 32 33 COMMDirectiveAlignmentIsInBytes = false; 34 LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; 35 HasDotTypeDotSizeDirective = false; 36 UseIntegratedAssembler = false; 37 NeedsFunctionDescriptors = true; 38 } 39 40 bool MCAsmInfoXCOFF::isAcceptableChar(char C) const { 41 // QualName is allowed for a MCSymbolXCOFF, and 42 // QualName contains '[' and ']'. 43 if (C == '[' || C == ']') 44 return true; 45 46 // For AIX assembler, symbols may consist of numeric digits, 47 // underscores, periods, uppercase or lowercase letters, or 48 // any combination of these. 49 return isAlnum(C) || C == '_' || C == '.'; 50 } 51