]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/llvm/lib/MC/MCAsmInfoXCOFF.cpp
Merge OpenSSL 1.1.1h.
[FreeBSD/FreeBSD.git] / contrib / llvm-project / llvm / lib / MC / MCAsmInfoXCOFF.cpp
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 }