[yaml2obj][obj2yaml] - Do not create a symbol table by default.
[llvm-complete.git] / lib / Target / PowerPC / MCTargetDesc / PPCMCAsmInfo.cpp
blob1216cd727289393987d76a50e44bf25da6d57a03
1 //===-- PPCMCAsmInfo.cpp - PPC asm properties -----------------------------===//
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 // This file contains the declarations of the MCAsmInfoDarwin properties.
11 //===----------------------------------------------------------------------===//
13 #include "PPCMCAsmInfo.h"
14 #include "llvm/ADT/Triple.h"
16 using namespace llvm;
18 void PPCMCAsmInfoDarwin::anchor() { }
20 PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit, const Triple& T) {
21 if (is64Bit) {
22 CodePointerSize = CalleeSaveStackSlotSize = 8;
24 IsLittleEndian = false;
26 SeparatorString = "@";
27 CommentString = ";";
28 ExceptionsType = ExceptionHandling::DwarfCFI;
30 if (!is64Bit)
31 Data64bitsDirective = nullptr; // We can't emit a 64-bit unit in PPC32 mode.
33 AssemblerDialect = 1; // New-Style mnemonics.
34 SupportsDebugInformation= true; // Debug information.
36 // The installed assembler for OSX < 10.6 lacks some directives.
37 // FIXME: this should really be a check on the assembler characteristics
38 // rather than OS version
39 if (T.isMacOSX() && T.isMacOSXVersionLT(10, 6))
40 HasWeakDefCanBeHiddenDirective = false;
42 UseIntegratedAssembler = true;
45 void PPCELFMCAsmInfo::anchor() { }
47 PPCELFMCAsmInfo::PPCELFMCAsmInfo(bool is64Bit, const Triple& T) {
48 // FIXME: This is not always needed. For example, it is not needed in the
49 // v2 abi.
50 NeedsLocalForSize = true;
52 if (is64Bit) {
53 CodePointerSize = CalleeSaveStackSlotSize = 8;
55 IsLittleEndian = T.getArch() == Triple::ppc64le;
57 // ".comm align is in bytes but .align is pow-2."
58 AlignmentIsInBytes = false;
60 CommentString = "#";
62 // Uses '.section' before '.bss' directive
63 UsesELFSectionDirectiveForBSS = true;
65 // Debug Information
66 SupportsDebugInformation = true;
68 DollarIsPC = true;
70 // Set up DWARF directives
71 MinInstAlignment = 4;
73 // Exceptions handling
74 ExceptionsType = ExceptionHandling::DwarfCFI;
76 ZeroDirective = "\t.space\t";
77 Data64bitsDirective = is64Bit ? "\t.quad\t" : nullptr;
78 AssemblerDialect = 1; // New-Style mnemonics.
79 LCOMMDirectiveAlignmentType = LCOMM::ByteAlignment;
81 UseIntegratedAssembler = true;
84 void PPCXCOFFMCAsmInfo::anchor() {}
86 PPCXCOFFMCAsmInfo::PPCXCOFFMCAsmInfo(bool Is64Bit, const Triple &T) {
87 assert(!IsLittleEndian && "Little-endian XCOFF not supported.");
88 CodePointerSize = CalleeSaveStackSlotSize = Is64Bit ? 8 : 4;
89 ZeroDirective = "\t.space\t";