Chris Lattner | 7b26fce | 2009-08-22 20:48:53 +0000 | [diff] [blame] | 1 | //===-- MCAsmInfoDarwin.cpp - Darwin asm properties -------------*- C++ -*-===// |
Anton Korobeynikov | c187438 | 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 | 7b26fce | 2009-08-22 20:48:53 +0000 | [diff] [blame] | 15 | #include "llvm/MC/MCAsmInfoDarwin.h" |
Rafael Espindola | c5dac4d | 2011-04-28 16:09:09 +0000 | [diff] [blame] | 16 | #include "llvm/MC/MCContext.h" |
| 17 | #include "llvm/MC/MCExpr.h" |
| 18 | #include "llvm/MC/MCStreamer.h" |
Anton Korobeynikov | c187438 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 19 | using namespace llvm; |
| 20 | |
Chris Lattner | 2b4364f | 2010-01-20 06:34:14 +0000 | [diff] [blame] | 21 | MCAsmInfoDarwin::MCAsmInfoDarwin() { |
Chris Lattner | 8284b66 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 22 | // Common settings for all Darwin targets. |
| 23 | // Syntax: |
| 24 | GlobalPrefix = "_"; |
| 25 | PrivateGlobalPrefix = "L"; |
Chris Lattner | b866602 | 2009-09-16 01:46:41 +0000 | [diff] [blame] | 26 | LinkerPrivateGlobalPrefix = "l"; |
Chris Lattner | 8284b66 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 27 | AllowQuotesInName = true; |
| 28 | HasSingleParameterDotFile = false; |
Chris Lattner | 76bdea3 | 2010-01-23 07:21:06 +0000 | [diff] [blame] | 29 | HasSubsectionsViaSymbols = true; |
Chris Lattner | 8284b66 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 30 | |
Chris Lattner | 54075a7 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 31 | AlignmentIsInBytes = false; |
Rafael Espindola | dcb03f0 | 2010-01-26 20:21:43 +0000 | [diff] [blame] | 32 | COMMDirectiveAlignmentIsInBytes = false; |
Chris Lattner | abdcbc7 | 2009-08-11 22:39:40 +0000 | [diff] [blame] | 33 | InlineAsmStart = " InlineAsm Start"; |
| 34 | InlineAsmEnd = " InlineAsm End"; |
Chris Lattner | 54075a7 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 35 | |
Chris Lattner | 8284b66 | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 36 | // Directives: |
| 37 | WeakDefDirective = "\t.weak_definition "; |
| 38 | WeakRefDirective = "\t.weak_reference "; |
Chris Lattner | d832c8e | 2009-08-11 22:17:31 +0000 | [diff] [blame] | 39 | ZeroDirective = "\t.space\t"; // ".space N" emits N zeros. |
Chris Lattner | 1d37188 | 2010-01-19 02:09:44 +0000 | [diff] [blame] | 40 | HasMachoZeroFillDirective = true; // Uses .zerofill |
Eric Christopher | 27e7ffc | 2010-05-20 00:49:07 +0000 | [diff] [blame] | 41 | HasMachoTBSSDirective = true; // Uses .tbss |
Duncan Sands | 5c04c62 | 2011-09-02 18:07:19 +0000 | [diff] [blame] | 42 | StructorOutputOrder = Structors::PriorityOrder; |
Chris Lattner | e9d28b1 | 2010-01-19 04:34:02 +0000 | [diff] [blame] | 43 | HasStaticCtorDtorReferenceInStaticMode = true; |
Rafael Espindola | 1048e75 | 2010-12-04 00:31:13 +0000 | [diff] [blame] | 44 | |
Owen Anderson | 0ca562e | 2011-10-04 23:26:17 +0000 | [diff] [blame] | 45 | CodeBegin = "L$start$code$"; |
| 46 | DataBegin = "L$start$data$"; |
| 47 | JT8Begin = "L$start$jt8$"; |
| 48 | JT16Begin = "L$start$jt16$"; |
| 49 | JT32Begin = "L$start$jt32$"; |
| 50 | SupportsDataRegions = true; |
| 51 | |
Rafael Espindola | 1048e75 | 2010-12-04 00:31:13 +0000 | [diff] [blame] | 52 | // FIXME: Darwin 10 and newer don't need this. |
| 53 | LinkerRequiresNonEmptyDwarfLines = true; |
Rafael Espindola | 44bbe36 | 2010-12-06 17:27:56 +0000 | [diff] [blame] | 54 | |
Rafael Espindola | a6cd2d8 | 2010-12-22 21:51:29 +0000 | [diff] [blame] | 55 | // FIXME: Change this once MC is the system assembler. |
| 56 | HasAggressiveSymbolFolding = false; |
| 57 | |
Chris Lattner | 0bfd279 | 2010-01-23 06:53:23 +0000 | [diff] [blame] | 58 | HiddenVisibilityAttr = MCSA_PrivateExtern; |
Stuart Hastings | bf83659 | 2011-02-23 02:27:05 +0000 | [diff] [blame] | 59 | HiddenDeclarationVisibilityAttr = MCSA_Invalid; |
Bill Wendling | 11b9894 | 2011-11-29 02:39:58 +0000 | [diff] [blame^] | 60 | |
Chris Lattner | 0bfd279 | 2010-01-23 06:53:23 +0000 | [diff] [blame] | 61 | // Doesn't support protected visibility. |
Bill Wendling | 11b9894 | 2011-11-29 02:39:58 +0000 | [diff] [blame^] | 62 | ProtectedVisibilityAttr = MCSA_Invalid; |
Chris Lattner | 0bfd279 | 2010-01-23 06:53:23 +0000 | [diff] [blame] | 63 | |
Chris Lattner | 54075a7 | 2009-08-11 22:31:42 +0000 | [diff] [blame] | 64 | HasDotTypeDotSizeDirective = false; |
Chris Lattner | 1deb09c | 2010-01-23 05:51:36 +0000 | [diff] [blame] | 65 | HasNoDeadStrip = true; |
Kevin Enderby | 8be1441 | 2010-11-19 18:39:33 +0000 | [diff] [blame] | 66 | HasSymbolResolver = true; |
Devang Patel | ea63639 | 2010-08-31 23:50:19 +0000 | [diff] [blame] | 67 | |
Rafael Espindola | 2fe0ee1 | 2011-05-10 20:35:05 +0000 | [diff] [blame] | 68 | DwarfRequiresRelocationForSectionOffset = false; |
Devang Patel | da3ef85 | 2010-09-02 16:43:44 +0000 | [diff] [blame] | 69 | DwarfUsesLabelOffsetForRanges = false; |
Nick Lewycky | d59c0ca | 2011-10-27 06:44:11 +0000 | [diff] [blame] | 70 | DwarfUsesRelocationsForStringPool = false; |
Anton Korobeynikov | c187438 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 71 | } |