| //===-- DarwinTargetAsmInfo.cpp - Darwin asm properties ---------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines target asm properties related what form asm statements |
| // should take in general on Darwin-based targets |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "llvm/Target/DarwinTargetAsmInfo.h" |
| #include "llvm/ADT/Triple.h" |
| using namespace llvm; |
| |
| DarwinTargetAsmInfo::DarwinTargetAsmInfo(const Triple &Triple) { |
| // Common settings for all Darwin targets. |
| // Syntax: |
| GlobalPrefix = "_"; |
| PrivateGlobalPrefix = "L"; |
| LinkerPrivateGlobalPrefix = "l"; // Marker for some ObjC metadata |
| NeedsSet = true; |
| NeedsIndirectEncoding = true; |
| AllowQuotesInName = true; |
| HasSingleParameterDotFile = false; |
| |
| AlignmentIsInBytes = false; |
| InlineAsmStart = " InlineAsm Start"; |
| InlineAsmEnd = " InlineAsm End"; |
| |
| // In non-PIC modes, emit a special label before jump tables so that the |
| // linker can perform more accurate dead code stripping. We do not check the |
| // relocation model here since it can be overridden later. |
| JumpTableSpecialLabelPrefix = "l"; |
| |
| // Directives: |
| WeakDefDirective = "\t.weak_definition "; |
| WeakRefDirective = "\t.weak_reference "; |
| HiddenDirective = "\t.private_extern "; |
| LCOMMDirective = "\t.lcomm\t"; |
| ZeroDirective = "\t.space\t"; // ".space N" emits N zeros. |
| ZeroFillDirective = "\t.zerofill\t"; // Uses .zerofill |
| SetDirective = "\t.set"; |
| ProtectedDirective = "\t.globl\t"; |
| HasDotTypeDotSizeDirective = false; |
| UsedDirective = "\t.no_dead_strip\t"; |
| |
| // On Leoaprd (10.5 aka darwin9) and earlier, _foo.eh symbols must be exported |
| // so that the linker knows about them. This is not necessary on 10.6 and |
| // later, but it doesn't hurt anything. |
| if (Triple.getDarwinMajorNumber() >= 10) |
| Is_EHSymbolPrivate = false; |
| |
| // Leopard (10.5 aka darwin9) and later support aligned common symbols. |
| COMMDirectiveTakesAlignment = Triple.getDarwinMajorNumber() >= 9; |
| |
| GlobalEHDirective = "\t.globl\t"; |
| SupportsWeakOmittedEHFrame = false; |
| } |
| |