Chris Lattner | 621c44d | 2009-08-22 20:48:53 +0000 | [diff] [blame] | 1 | //===-- MCAsmInfoDarwin.cpp - Darwin asm properties -------------*- C++ -*-===// |
asl | f80e608 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | // |
| 10 | // This file defines target asm properties related what form asm statements |
| 11 | // should take in general on Darwin-based targets |
| 12 | // |
| 13 | //===----------------------------------------------------------------------===// |
| 14 | |
Chris Lattner | 621c44d | 2009-08-22 20:48:53 +0000 | [diff] [blame] | 15 | #include "llvm/MC/MCAsmInfoDarwin.h" |
asl | f80e608 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 16 | using namespace llvm; |
| 17 | |
Chris Lattner | 50f82ef | 2010-01-20 06:34:14 +0000 | [diff] [blame] | 18 | MCAsmInfoDarwin::MCAsmInfoDarwin() { |
Chris Lattner | ca07217 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 19 | // Common settings for all Darwin targets. |
| 20 | // Syntax: |
| 21 | GlobalPrefix = "_"; |
| 22 | PrivateGlobalPrefix = "L"; |
Chris Lattner | 8886dc2 | 2009-09-16 01:46:41 +0000 | [diff] [blame] | 23 | LinkerPrivateGlobalPrefix = "l"; |
Chris Lattner | ca07217 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 24 | AllowQuotesInName = true; |
| 25 | HasSingleParameterDotFile = false; |
Chris Lattner | 2dc6ddd | 2010-01-23 07:21:06 +0000 | [diff] [blame] | 26 | HasSubsectionsViaSymbols = true; |
Chris Lattner | ca07217 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 27 | |
Chris Lattner | ca22f87 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 28 | AlignmentIsInBytes = false; |
Rafael Espindola | 8fd77a1 | 2010-01-26 20:21:43 +0000 | [diff] [blame^] | 29 | COMMDirectiveAlignmentIsInBytes = false; |
Chris Lattner | cae14fd | 2009-08-11 22:39:40 +0000 | [diff] [blame] | 30 | InlineAsmStart = " InlineAsm Start"; |
| 31 | InlineAsmEnd = " InlineAsm End"; |
Chris Lattner | ca22f87 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 32 | |
Chris Lattner | ca07217 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 33 | // Directives: |
| 34 | WeakDefDirective = "\t.weak_definition "; |
| 35 | WeakRefDirective = "\t.weak_reference "; |
Chris Lattner | 9364e72 | 2009-08-11 22:17:31 +0000 | [diff] [blame] | 36 | ZeroDirective = "\t.space\t"; // ".space N" emits N zeros. |
Chris Lattner | 87edd27 | 2010-01-19 02:09:44 +0000 | [diff] [blame] | 37 | HasMachoZeroFillDirective = true; // Uses .zerofill |
Chris Lattner | 2f2fe05 | 2010-01-19 04:34:02 +0000 | [diff] [blame] | 38 | HasStaticCtorDtorReferenceInStaticMode = true; |
Chris Lattner | 75dabac | 2009-08-11 22:22:44 +0000 | [diff] [blame] | 39 | SetDirective = "\t.set"; |
Chris Lattner | 10bcc6b | 2010-01-23 06:53:23 +0000 | [diff] [blame] | 40 | |
| 41 | HiddenVisibilityAttr = MCSA_PrivateExtern; |
| 42 | // Doesn't support protected visibility. |
| 43 | ProtectedVisibilityAttr = MCSA_Global; |
| 44 | |
| 45 | |
Chris Lattner | ca22f87 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 46 | HasDotTypeDotSizeDirective = false; |
Chris Lattner | d7b6c9c | 2010-01-23 05:51:36 +0000 | [diff] [blame] | 47 | HasNoDeadStrip = true; |
Chris Lattner | f26c779 | 2010-01-19 06:25:51 +0000 | [diff] [blame] | 48 | // Note: Even though darwin has the .lcomm directive, it is just a synonym for |
| 49 | // zerofill, so we prefer to use .zerofill. |
Chris Lattner | 7fbb0a1 | 2009-08-11 22:06:07 +0000 | [diff] [blame] | 50 | |
Daniel Dunbar | ee3b6c6 | 2009-08-13 17:03:38 +0000 | [diff] [blame] | 51 | // _foo.eh symbols are currently always exported so that the linker knows |
| 52 | // about them. This is not necessary on 10.6 and later, but it |
| 53 | // doesn't hurt anything. |
| 54 | // FIXME: I need to get this from Triple. |
| 55 | Is_EHSymbolPrivate = false; |
Chris Lattner | ca22f87 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 56 | GlobalEHDirective = "\t.globl\t"; |
| 57 | SupportsWeakOmittedEHFrame = false; |
asl | f80e608 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 58 | } |
| 59 | |