| Anton Korobeynikov | 745e864 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 1 | //===-- DarwinTargetAsmInfo.cpp - Darwin asm properties ---------*- C++ -*-===// | 
|  | 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 |  | 
| Anton Korobeynikov | 745e864 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 15 | #include "llvm/Target/DarwinTargetAsmInfo.h" | 
| Anton Korobeynikov | 745e864 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 16 | using namespace llvm; | 
|  | 17 |  | 
| Chris Lattner | 8d4a0a3 | 2009-08-02 04:27:24 +0000 | [diff] [blame] | 18 | DarwinTargetAsmInfo::DarwinTargetAsmInfo() { | 
| Chris Lattner | 4e0f25b | 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 | 90f8b70 | 2009-07-21 17:30:51 +0000 | [diff] [blame] | 23 | LinkerPrivateGlobalPrefix = "l";  // Marker for some ObjC metadata | 
| Chris Lattner | 4e0f25b | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 24 | NeedsSet = true; | 
|  | 25 | NeedsIndirectEncoding = true; | 
|  | 26 | AllowQuotesInName = true; | 
|  | 27 | HasSingleParameterDotFile = false; | 
|  | 28 |  | 
| Chris Lattner | e28a2e8 | 2009-08-11 22:31:42 +0000 | [diff] [blame^] | 29 | AlignmentIsInBytes = false; | 
|  | 30 |  | 
| Chris Lattner | 4e0f25b | 2009-06-19 00:08:39 +0000 | [diff] [blame] | 31 | // In non-PIC modes, emit a special label before jump tables so that the | 
|  | 32 | // linker can perform more accurate dead code stripping.  We do not check the | 
|  | 33 | // relocation model here since it can be overridden later. | 
|  | 34 | JumpTableSpecialLabelPrefix = "l"; | 
|  | 35 |  | 
|  | 36 | // Directives: | 
|  | 37 | WeakDefDirective = "\t.weak_definition "; | 
|  | 38 | WeakRefDirective = "\t.weak_reference "; | 
|  | 39 | HiddenDirective = "\t.private_extern "; | 
| Chris Lattner | c89ecc5 | 2009-08-11 22:06:07 +0000 | [diff] [blame] | 40 | LCOMMDirective = "\t.lcomm\t"; | 
| Chris Lattner | b6ba9c3 | 2009-08-11 22:17:31 +0000 | [diff] [blame] | 41 | ZeroDirective = "\t.space\t";  // ".space N" emits N zeros. | 
|  | 42 | ZeroFillDirective = "\t.zerofill\t";  // Uses .zerofill | 
| Chris Lattner | e2811a7 | 2009-08-11 22:22:44 +0000 | [diff] [blame] | 43 | SetDirective = "\t.set"; | 
|  | 44 | ProtectedDirective = "\t.globl\t"; | 
| Chris Lattner | e28a2e8 | 2009-08-11 22:31:42 +0000 | [diff] [blame^] | 45 | HasDotTypeDotSizeDirective = false; | 
|  | 46 | UsedDirective = "\t.no_dead_strip\t"; | 
| Chris Lattner | c89ecc5 | 2009-08-11 22:06:07 +0000 | [diff] [blame] | 47 |  | 
| Chris Lattner | e2cf37b | 2009-07-17 20:46:40 +0000 | [diff] [blame] | 48 | // _foo.eh symbols are currently always exported so that the linker knows | 
| Chris Lattner | 21e1e81 | 2009-08-02 06:51:58 +0000 | [diff] [blame] | 49 | // about them.  This is not necessary on 10.6 and later, but it | 
| Chris Lattner | e2cf37b | 2009-07-17 20:46:40 +0000 | [diff] [blame] | 50 | // doesn't hurt anything. | 
| Chris Lattner | 21e1e81 | 2009-08-02 06:51:58 +0000 | [diff] [blame] | 51 | // FIXME: I need to get this from Triple. | 
| Chris Lattner | e2cf37b | 2009-07-17 20:46:40 +0000 | [diff] [blame] | 52 | Is_EHSymbolPrivate = false; | 
| Chris Lattner | e28a2e8 | 2009-08-11 22:31:42 +0000 | [diff] [blame^] | 53 | GlobalEHDirective = "\t.globl\t"; | 
|  | 54 | SupportsWeakOmittedEHFrame = false; | 
|  | 55 |  | 
| Anton Korobeynikov | 745e864 | 2008-07-19 13:14:46 +0000 | [diff] [blame] | 56 | } | 
|  | 57 |  |