Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/darwin.h @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
rev | line source |
---|---|
0 | 1 /* Target definitions for Darwin (Mac OS X) systems. |
2 Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002, 2003, 2004, | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
3 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
0 | 4 Free Software Foundation, Inc. |
5 Contributed by Apple Computer Inc. | |
6 | |
7 This file is part of GCC. | |
8 | |
9 GCC is free software; you can redistribute it and/or modify | |
10 it under the terms of the GNU General Public License as published by | |
11 the Free Software Foundation; either version 3, or (at your option) | |
12 any later version. | |
13 | |
14 GCC is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
19 Under Section 7 of GPL version 3, you are granted additional | |
20 permissions described in the GCC Runtime Library Exception, version | |
21 3.1, as published by the Free Software Foundation. | |
22 | |
23 You should have received a copy of the GNU General Public License and | |
24 a copy of the GCC Runtime Library Exception along with this program; | |
25 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
26 <http://www.gnu.org/licenses/>. */ | |
27 | |
28 #ifndef CONFIG_DARWIN_H | |
29 #define CONFIG_DARWIN_H | |
30 | |
31 /* The definitions in this file are common to all processor types | |
32 running Darwin, which is the kernel for Mac OS X. Darwin is | |
33 basically a BSD user layer laid over a Mach kernel, then evolved | |
34 for many years (at NeXT) in parallel with other Unix systems. So | |
35 while the runtime is a somewhat idiosyncratic Mach-based thing, | |
36 other definitions look like they would for a BSD variant. */ | |
37 | |
38 /* Although NeXT ran on many different architectures, as of Jan 2001 | |
39 the only supported Darwin targets are PowerPC and x86. */ | |
40 | |
41 /* One of Darwin's NeXT legacies is the Mach-O format, which is partly | |
42 like a.out and partly like COFF, with additional features like | |
43 multi-architecture binary support. */ | |
44 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
45 #define DARWIN_X86 0 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
46 #define DARWIN_PPC 0 |
0 | 47 |
48 /* Don't assume anything about the header files. */ | |
49 #define NO_IMPLICIT_EXTERN_C | |
50 | |
51 /* Suppress g++ attempt to link in the math library automatically. */ | |
52 #define MATH_LIBRARY "" | |
53 | |
54 /* We have atexit. */ | |
55 | |
56 #define HAVE_ATEXIT | |
57 | |
58 /* Define an empty body for the function do_global_dtors() in libgcc2.c. */ | |
59 | |
60 #define DO_GLOBAL_DTORS_BODY | |
61 | |
62 /* The string value for __SIZE_TYPE__. */ | |
63 | |
64 #ifndef SIZE_TYPE | |
65 #define SIZE_TYPE "long unsigned int" | |
66 #endif | |
67 | |
68 /* Type used for ptrdiff_t, as a string used in a declaration. */ | |
69 | |
70 #undef PTRDIFF_TYPE | |
71 #define PTRDIFF_TYPE "int" | |
72 | |
73 /* wchar_t is int. */ | |
74 | |
75 #undef WCHAR_TYPE | |
76 #define WCHAR_TYPE "int" | |
77 #undef WCHAR_TYPE_SIZE | |
78 #define WCHAR_TYPE_SIZE 32 | |
79 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
80 #define INT8_TYPE "signed char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
81 #define INT16_TYPE "short int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
82 #define INT32_TYPE "int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
83 #define INT64_TYPE "long long int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
84 #define UINT8_TYPE "unsigned char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
85 #define UINT16_TYPE "short unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
86 #define UINT32_TYPE "unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
87 #define UINT64_TYPE "long long unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
88 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
89 #define INT_LEAST8_TYPE "signed char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
90 #define INT_LEAST16_TYPE "short int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
91 #define INT_LEAST32_TYPE "int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
92 #define INT_LEAST64_TYPE "long long int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
93 #define UINT_LEAST8_TYPE "unsigned char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
94 #define UINT_LEAST16_TYPE "short unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
95 #define UINT_LEAST32_TYPE "unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
96 #define UINT_LEAST64_TYPE "long long unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
97 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
98 #define INT_FAST8_TYPE "signed char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
99 #define INT_FAST16_TYPE "short int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
100 #define INT_FAST32_TYPE "int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
101 #define INT_FAST64_TYPE "long long int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
102 #define UINT_FAST8_TYPE "unsigned char" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
103 #define UINT_FAST16_TYPE "short unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
104 #define UINT_FAST32_TYPE "unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
105 #define UINT_FAST64_TYPE "long long unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
106 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
107 #define INTPTR_TYPE "long int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
108 #define UINTPTR_TYPE "long unsigned int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
109 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
110 #define SIG_ATOMIC_TYPE "int" |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
111 |
0 | 112 /* Default to using the NeXT-style runtime, since that's what is |
113 pre-installed on Darwin systems. */ | |
114 | |
115 #define NEXT_OBJC_RUNTIME | |
116 | |
117 /* Don't default to pcc-struct-return, because gcc is the only compiler, and | |
118 we want to retain compatibility with older gcc versions. */ | |
119 | |
120 #undef DEFAULT_PCC_STRUCT_RETURN | |
121 #define DEFAULT_PCC_STRUCT_RETURN 0 | |
122 | |
123 /* True if pragma ms_struct is in effect. */ | |
124 extern GTY(()) int darwin_ms_struct; | |
125 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
126 #define DRIVER_SELF_SPECS \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
127 "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull", \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
128 "%{gused:-g -feliminate-unused-debug-symbols} %<gused", \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
129 "%{fapple-kext|mkernel:-static}", \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
130 "%{shared:-Zdynamiclib} %<shared" |
0 | 131 |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
132 #define DARWIN_CC1_SPEC \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
133 "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
134 "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables " \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
135 "%<filelist* %<framework*" |
0 | 136 |
137 #define SUBSUBTARGET_OVERRIDE_OPTIONS \ | |
138 do { \ | |
139 darwin_override_options (); \ | |
140 } while (0) | |
141 | |
142 #define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do { \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
143 /* Unless set, force ABI=2 for NeXT and m64, 0 otherwise. */ \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
144 if (!global_options_set.x_flag_objc_abi) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
145 global_options.x_flag_objc_abi \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
146 = (flag_next_runtime && TARGET_64BIT) ? 2 : 0; \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
147 /* Objective-C family ABI 2 is only valid for next/m64 at present. */ \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
148 if (global_options_set.x_flag_objc_abi && flag_next_runtime) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
149 if (TARGET_64BIT && global_options.x_flag_objc_abi < 2) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
150 error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is only" \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
151 " supported on %<-m64%> targets for" \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
152 " %<-fnext-runtime%>"); \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
153 /* Sort out ObjC exceptions: If the runtime is NeXT we default to \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
154 sjlj for m32 only. */ \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
155 if (!global_options_set.x_flag_objc_sjlj_exceptions) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
156 global_options.x_flag_objc_sjlj_exceptions = \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
157 flag_next_runtime && !TARGET_64BIT; \ |
0 | 158 if (flag_mkernel || flag_apple_kext) \ |
159 { \ | |
160 if (flag_use_cxa_atexit == 2) \ | |
161 flag_use_cxa_atexit = 0; \ | |
162 /* kexts should always be built without the coalesced sections \ | |
163 because the kernel loader doesn't grok such sections. */ \ | |
164 flag_weak = 0; \ | |
165 /* No RTTI in kexts. */ \ | |
166 flag_rtti = 0; \ | |
167 } \ | |
168 } while (0) | |
169 | |
170 /* Machine dependent cpp options. Don't add more options here, add | |
171 them to darwin_cpp_builtins in darwin-c.c. */ | |
172 | |
173 #undef CPP_SPEC | |
174 #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \ | |
175 " %{pthread:-D_REENTRANT}" | |
176 | |
177 /* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
178 precomp, libtool, and fat build additions. |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
179 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
180 In general, random Darwin linker flags should go into LINK_SPEC |
0 | 181 instead of LINK_COMMAND_SPEC. The command spec is better for |
182 specifying the handling of options understood by generic Unix | |
183 linkers, and for positional arguments like libraries. */ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
184 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
185 #define LINK_COMMAND_SPEC_A \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
186 "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
187 %(linker) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
188 %{flto*:%<fcompare-debug*} \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
189 %{flto*} \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
190 %l %X %{s} %{t} %{Z} %{u*} \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
191 %{e*} %{r} \ |
0 | 192 %{o*}%{!o:-o a.out} \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
193 %{!nostdlib:%{!nostartfiles:%S}} \ |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
194 %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
195 %{fopenmp|ftree-parallelize-loops=*: \ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
196 %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
197 %{!nostdlib:%{!nodefaultlibs:\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
198 %(link_ssp) %(link_gcc_c_sequence)\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
199 }}\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
200 %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
201 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
202 #define DSYMUTIL "\ndsymutil" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
203 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
204 #define DSYMUTIL_SPEC \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
205 "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
206 %{v} \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
207 %{gdwarf-2:%{!gstabs*:%{!g0: -idsym}}}\ |
0 | 208 %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm: \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
209 %{gdwarf-2:%{!gstabs*:%{!g0: -dsym}}}}}}}}}}}" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
210 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
211 #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
212 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
213 /* Tell collect2 to run dsymutil for us as necessary. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
214 #define COLLECT_RUN_DSYMUTIL 1 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
215 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
216 /* We only want one instance of %G, since libSystem (Darwin's -lc) does not depend |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
217 on libgcc. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
218 #undef LINK_GCC_C_SEQUENCE_SPEC |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
219 #define LINK_GCC_C_SEQUENCE_SPEC "%G %L" |
0 | 220 |
221 #ifdef TARGET_SYSTEM_ROOT | |
222 #define LINK_SYSROOT_SPEC \ | |
223 "%{isysroot*:-syslibroot %*;:-syslibroot " TARGET_SYSTEM_ROOT "}" | |
224 #else | |
225 #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}" | |
226 #endif | |
227 | |
228 /* Please keep the random linker options in alphabetical order (modulo | |
229 'Z' and 'no' prefixes). Note that options taking arguments may appear | |
230 multiple times on a command line with different arguments each time, | |
231 so put a * after their names so all of them get passed. */ | |
232 #define LINK_SPEC \ | |
233 "%{static}%{!static:-dynamic} \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
234 %:remove-outfile(-ldl) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
235 %:remove-outfile(-lm) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
236 %:remove-outfile(-lpthread) \ |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
237 %{fgnu-runtime: %{static|static-libgcc: \ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
238 %:replace-outfile(-lobjc libobjc-gnu.a%s); \ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
239 :%:replace-outfile(-lobjc -lobjc-gnu ) } }\ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
240 %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
241 %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
242 %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ |
0 | 243 %{!Zdynamiclib: \ |
244 %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \ | |
245 %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \ | |
246 %{Zbundle:-bundle} \ | |
247 %{Zbundle_loader*:-bundle_loader %*} \ | |
248 %{client_name*} \ | |
249 %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\ | |
250 } \ | |
251 %{current_version*:%e-current_version only allowed with -dynamiclib} \ | |
252 %{Zforce_flat_namespace:-force_flat_namespace} \ | |
253 %{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \ | |
254 %{keep_private_externs} \ | |
255 %{private_bundle} \ | |
256 } \ | |
257 %{Zdynamiclib: -dylib \ | |
258 %{Zbundle:%e-bundle not allowed with -dynamiclib} \ | |
259 %{Zbundle_loader*:%e-bundle_loader not allowed with -dynamiclib} \ | |
260 %{client_name*:%e-client_name not allowed with -dynamiclib} \ | |
261 %{compatibility_version*:-dylib_compatibility_version %*} \ | |
262 %{current_version*:-dylib_current_version %*} \ | |
263 %{Zforce_cpusubtype_ALL:-arch %(darwin_arch)} \ | |
264 %{!Zforce_cpusubtype_ALL: -arch %(darwin_subarch)} \ | |
265 %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \ | |
266 %{Zinstall_name*:-dylib_install_name %*} \ | |
267 %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \ | |
268 %{private_bundle:%e-private_bundle not allowed with -dynamiclib} \ | |
269 } \ | |
270 %{Zall_load:-all_load} \ | |
271 %{Zallowable_client*:-allowable_client %*} \ | |
272 %{Zbind_at_load:-bind_at_load} \ | |
273 %{Zarch_errors_fatal:-arch_errors_fatal} \ | |
274 %{Zdead_strip:-dead_strip} \ | |
275 %{Zno_dead_strip_inits_and_terms:-no_dead_strip_inits_and_terms} \ | |
276 %{Zdylib_file*:-dylib_file %*} \ | |
277 %{Zdynamic:-dynamic}\ | |
278 %{Zexported_symbols_list*:-exported_symbols_list %*} \ | |
279 %{Zflat_namespace:-flat_namespace} \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
280 %{headerpad_max_install_names} \ |
0 | 281 %{Zimage_base*:-image_base %*} \ |
282 %{Zinit*:-init %*} \ | |
283 %{!mmacosx-version-min=*:-macosx_version_min %(darwin_minversion)} \ | |
284 %{mmacosx-version-min=*:-macosx_version_min %*} \ | |
285 %{nomultidefs} \ | |
286 %{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \ | |
287 %{Zmultiply_defined*:-multiply_defined %*} \ | |
288 %{!Zmultiply_defined*:%{shared-libgcc: \ | |
289 %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \ | |
290 %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \ | |
291 %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \ | |
292 %{fpie:-pie} \ | |
293 %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \ | |
294 %{read_only_relocs} \ | |
295 %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \ | |
296 %{Zsegaddr*:-segaddr %*} \ | |
297 %{Zsegs_read_only_addr*:-segs_read_only_addr %*} \ | |
298 %{Zsegs_read_write_addr*:-segs_read_write_addr %*} \ | |
299 %{Zseg_addr_table*: -seg_addr_table %*} \ | |
300 %{Zfn_seg_addr_table_filename*:-seg_addr_table_filename %*} \ | |
301 %{sub_library*} %{sub_umbrella*} \ | |
302 " LINK_SYSROOT_SPEC " \ | |
303 %{twolevel_namespace} %{twolevel_namespace_hints} \ | |
304 %{Zumbrella*: -umbrella %*} \ | |
305 %{undefined*} \ | |
306 %{Zunexported_symbols_list*:-unexported_symbols_list %*} \ | |
307 %{Zweak_reference_mismatches*:-weak_reference_mismatches %*} \ | |
308 %{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak} \ | |
309 %{X} \ | |
310 %{y*} \ | |
311 %{w} \ | |
312 %{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit} \ | |
313 %{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload} \ | |
314 %{whatsloaded} %{dylinker_install_name*} \ | |
315 %{dylinker} %{Mach} " | |
316 | |
317 | |
318 /* Machine dependent libraries. */ | |
319 | |
320 #define LIB_SPEC "%{!static:-lSystem}" | |
321 | |
322 /* Support -mmacosx-version-min by supplying different (stub) libgcc_s.dylib | |
323 libraries to link against, and by not linking against libgcc_s on | |
324 earlier-than-10.3.9. | |
325 | |
326 Note that by default, -lgcc_eh is not linked against! This is | |
327 because in a future version of Darwin the EH frame information may | |
328 be in a new format, or the fallback routine might be changed; if | |
329 you want to explicitly link against the static version of those | |
330 routines, because you know you don't need to unwind through system | |
331 libraries, you need to explicitly say -static-libgcc. | |
332 | |
333 If it is linked against, it has to be before -lgcc, because it may | |
334 need symbols from -lgcc. */ | |
335 #undef REAL_LIBGCC_SPEC | |
336 #define REAL_LIBGCC_SPEC \ | |
337 "%{static-libgcc|static: -lgcc_eh -lgcc; \ | |
338 shared-libgcc|fexceptions|fgnu-runtime: \ | |
339 %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
340 %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
341 %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
342 %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
343 -lgcc ; \ |
0 | 344 :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
345 %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
346 %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
347 %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
348 -lgcc }" |
0 | 349 |
350 /* We specify crt0.o as -lcrt0.o so that ld will search the library path. | |
351 | |
352 crt3.o provides __cxa_atexit on systems that don't have it. Since | |
353 it's only used with C++, which requires passing -shared-libgcc, key | |
354 off that to avoid unnecessarily adding a destructor to every | |
355 powerpc program built. */ | |
356 | |
357 #undef STARTFILE_SPEC | |
358 #define STARTFILE_SPEC \ | |
359 "%{Zdynamiclib: %(darwin_dylib1) } \ | |
360 %{!Zdynamiclib:%{Zbundle:%{!static:-lbundle1.o}} \ | |
361 %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ | |
362 %{!static:%{object:-lgcrt0.o} \ | |
363 %{!object:%{preload:-lgcrt0.o} \ | |
364 %{!preload:-lgcrt1.o %(darwin_crt2)}}}} \ | |
365 %{!pg:%{static:-lcrt0.o} \ | |
366 %{!static:%{object:-lcrt0.o} \ | |
367 %{!object:%{preload:-lcrt0.o} \ | |
368 %{!preload: %(darwin_crt1) \ | |
369 %(darwin_crt2)}}}}}} \ | |
370 %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" | |
371 | |
372 /* The native Darwin linker doesn't necessarily place files in the order | |
373 that they're specified on the link line. Thus, it is pointless | |
374 to put anything in ENDFILE_SPEC. */ | |
375 /* #define ENDFILE_SPEC "" */ | |
376 | |
377 #define DARWIN_EXTRA_SPECS \ | |
378 { "darwin_crt1", DARWIN_CRT1_SPEC }, \ | |
379 { "darwin_dylib1", DARWIN_DYLIB1_SPEC }, \ | |
380 { "darwin_minversion", DARWIN_MINVERSION_SPEC }, | |
381 | |
382 #define DARWIN_DYLIB1_SPEC \ | |
383 "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ | |
384 %:version-compare(>= 10.5 mmacosx-version-min= -ldylib1.10.5.o)" | |
385 | |
386 #define DARWIN_CRT1_SPEC \ | |
387 "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ | |
388 %:version-compare(>= 10.5 mmacosx-version-min= -lcrt1.10.5.o)" | |
389 | |
390 /* Default Darwin ASM_SPEC, very simple. */ | |
391 #define ASM_SPEC "-arch %(darwin_arch) \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
392 %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
393 %{static}" |
0 | 394 |
395 /* We still allow output of STABS. */ | |
396 | |
397 #define DBX_DEBUGGING_INFO 1 | |
398 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
399 #define DWARF2_DEBUGGING_INFO 1 |
0 | 400 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG |
401 | |
402 #define DEBUG_FRAME_SECTION "__DWARF,__debug_frame,regular,debug" | |
403 #define DEBUG_INFO_SECTION "__DWARF,__debug_info,regular,debug" | |
404 #define DEBUG_ABBREV_SECTION "__DWARF,__debug_abbrev,regular,debug" | |
405 #define DEBUG_ARANGES_SECTION "__DWARF,__debug_aranges,regular,debug" | |
406 #define DEBUG_MACINFO_SECTION "__DWARF,__debug_macinfo,regular,debug" | |
407 #define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" | |
408 #define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" | |
409 #define DEBUG_PUBNAMES_SECTION "__DWARF,__debug_pubnames,regular,debug" | |
410 #define DEBUG_PUBTYPES_SECTION "__DWARF,__debug_pubtypes,regular,debug" | |
411 #define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" | |
412 #define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" | |
413 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
414 #define TARGET_WANT_DEBUG_PUB_SECTIONS true |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
415 |
0 | 416 /* When generating stabs debugging, use N_BINCL entries. */ |
417 | |
418 #define DBX_USE_BINCL | |
419 | |
420 /* There is no limit to the length of stabs strings. */ | |
421 | |
422 #define DBX_CONTIN_LENGTH 0 | |
423 | |
424 /* gdb needs a null N_SO at the end of each file for scattered loading. */ | |
425 | |
426 #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END | |
427 | |
428 /* GCC's definition of 'one_only' is the same as its definition of 'weak'. */ | |
429 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1) | |
430 | |
431 /* Mach-O supports 'weak imports', and 'weak definitions' in coalesced | |
432 sections. machopic_select_section ensures that weak variables go in | |
433 coalesced sections. Weak aliases (or any other kind of aliases) are | |
434 not supported. Weak symbols that aren't visible outside the .s file | |
435 are not supported. */ | |
436 #define ASM_WEAKEN_DECL(FILE, DECL, NAME, ALIAS) \ | |
437 do { \ | |
438 if (ALIAS) \ | |
439 { \ | |
440 warning (0, "alias definitions not supported in Mach-O; ignored"); \ | |
441 break; \ | |
442 } \ | |
443 \ | |
444 if (! DECL_EXTERNAL (DECL) && TREE_PUBLIC (DECL)) \ | |
445 targetm.asm_out.globalize_label (FILE, NAME); \ | |
446 if (DECL_EXTERNAL (DECL)) \ | |
447 fputs ("\t.weak_reference ", FILE); \ | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
448 else if (lookup_attribute ("weak_import", DECL_ATTRIBUTES (DECL))) \ |
0 | 449 break; \ |
450 else if (TREE_PUBLIC (DECL)) \ | |
451 fputs ("\t.weak_definition ", FILE); \ | |
452 else \ | |
453 break; \ | |
454 assemble_name (FILE, NAME); \ | |
455 fputc ('\n', FILE); \ | |
456 } while (0) | |
457 | |
458 /* Darwin has the pthread routines in libSystem, which every program | |
459 links to, so there's no need for weak-ness for that. */ | |
460 #define GTHREAD_USE_WEAK 0 | |
461 | |
462 /* The Darwin linker imposes two limitations on common symbols: they | |
463 can't have hidden visibility, and they can't appear in dylibs. As | |
464 a consequence, we should never use common symbols to represent | |
465 vague linkage. */ | |
466 #undef USE_COMMON_FOR_ONE_ONLY | |
467 #define USE_COMMON_FOR_ONE_ONLY 0 | |
468 | |
469 /* The Darwin linker doesn't want coalesced symbols to appear in | |
470 a static archive's table of contents. */ | |
471 #undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC | |
472 #define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1 | |
473 | |
474 /* On Darwin, we don't (at the time of writing) have linkonce sections | |
475 with names, so it's safe to make the class data not comdat. */ | |
476 #define TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT hook_bool_void_false | |
477 | |
478 /* For efficiency, on Darwin the RTTI information that is always | |
479 emitted in the standard C++ library should not be COMDAT. */ | |
480 #define TARGET_CXX_LIBRARY_RTTI_COMDAT hook_bool_void_false | |
481 | |
482 /* We make exception information linkonce. */ | |
483 #undef TARGET_USES_WEAK_UNWIND_INFO | |
484 #define TARGET_USES_WEAK_UNWIND_INFO 1 | |
485 | |
486 /* We need to use a nonlocal label for the start of an EH frame: the | |
487 Darwin linker requires that a coalesced section start with a label. | |
488 Unfortunately, it also requires that 'debug' sections don't contain | |
489 labels. */ | |
490 #undef FRAME_BEGIN_LABEL | |
491 #define FRAME_BEGIN_LABEL (for_eh ? "EH_frame" : "Lframe") | |
492 | |
493 /* Emit a label for the FDE corresponding to DECL. EMPTY means | |
494 emit a label for an empty FDE. */ | |
495 #define TARGET_ASM_EMIT_UNWIND_LABEL darwin_emit_unwind_label | |
496 | |
497 /* Emit a label to separate the exception table. */ | |
498 #define TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL darwin_emit_except_table_label | |
499 | |
500 /* Our profiling scheme doesn't LP labels and counter words. */ | |
501 | |
502 #define NO_PROFILE_COUNTERS 1 | |
503 | |
504 #undef INIT_SECTION_ASM_OP | |
505 #define INIT_SECTION_ASM_OP | |
506 | |
507 #undef INVOKE__main | |
508 | |
509 #define TARGET_ASM_CONSTRUCTOR machopic_asm_out_constructor | |
510 #define TARGET_ASM_DESTRUCTOR machopic_asm_out_destructor | |
511 | |
512 /* Always prefix with an underscore. */ | |
513 | |
514 #define USER_LABEL_PREFIX "_" | |
515 | |
516 /* A dummy symbol that will be replaced with the function base name. */ | |
517 #define MACHOPIC_FUNCTION_BASE_NAME "<pic base>" | |
518 | |
519 /* Don't output a .file directive. That is only used by the assembler for | |
520 error reporting. */ | |
521 #undef TARGET_ASM_FILE_START_FILE_DIRECTIVE | |
522 #define TARGET_ASM_FILE_START_FILE_DIRECTIVE false | |
523 | |
524 #undef TARGET_ASM_FILE_END | |
525 #define TARGET_ASM_FILE_END darwin_file_end | |
526 | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
527 /* Because Mach-O relocations have a counter from 1 to 255 for the |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
528 section number they apply to, it is necessary to output all |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
529 normal sections before the LTO sections, to make sure that the |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
530 sections that may have relocations always have a section number |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
531 smaller than 255. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
532 #undef TARGET_ASM_LTO_START |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
533 #define TARGET_ASM_LTO_START darwin_asm_lto_start |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
534 #undef TARGET_ASM_LTO_END |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
535 #define TARGET_ASM_LTO_END darwin_asm_lto_end |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
536 |
0 | 537 #define ASM_OUTPUT_SKIP(FILE,SIZE) \ |
538 fprintf (FILE, "\t.space "HOST_WIDE_INT_PRINT_UNSIGNED"\n", SIZE) | |
539 | |
540 /* Give ObjC methods pretty symbol names. */ | |
541 | |
542 #undef OBJC_GEN_METHOD_LABEL | |
543 #define OBJC_GEN_METHOD_LABEL(BUF,IS_INST,CLASS_NAME,CAT_NAME,SEL_NAME,NUM) \ | |
544 do { if (CAT_NAME) \ | |
545 sprintf (BUF, "%c[%s(%s) %s]", (IS_INST) ? '-' : '+', \ | |
546 (CLASS_NAME), (CAT_NAME), (SEL_NAME)); \ | |
547 else \ | |
548 sprintf (BUF, "%c[%s %s]", (IS_INST) ? '-' : '+', \ | |
549 (CLASS_NAME), (SEL_NAME)); \ | |
550 } while (0) | |
551 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
552 #undef ASM_DECLARE_OBJECT_NAME |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
553 #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
554 darwin_asm_declare_object_name ((FILE), (NAME), (DECL)) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
555 |
0 | 556 /* The RTTI data (e.g., __ti4name) is common and public (and static), |
557 but it does need to be referenced via indirect PIC data pointers. | |
558 The machopic_define_symbol calls are telling the machopic subsystem | |
559 that the name *is* defined in this module, so it doesn't need to | |
560 make them indirect. */ | |
561 | |
562 #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ | |
563 do { \ | |
564 const char *xname = NAME; \ | |
565 if (GET_CODE (XEXP (DECL_RTL (DECL), 0)) != SYMBOL_REF) \ | |
566 xname = IDENTIFIER_POINTER (DECL_NAME (DECL)); \ | |
567 if (! DECL_WEAK (DECL) \ | |
568 && ((TREE_STATIC (DECL) \ | |
569 && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL))) \ | |
570 || DECL_INITIAL (DECL))) \ | |
571 machopic_define_symbol (DECL_RTL (DECL)); \ | |
572 if ((TREE_STATIC (DECL) \ | |
573 && (!DECL_COMMON (DECL) || !TREE_PUBLIC (DECL))) \ | |
574 || DECL_INITIAL (DECL)) \ | |
575 (* targetm.encode_section_info) (DECL, DECL_RTL (DECL), false); \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
576 ASM_OUTPUT_FUNCTION_LABEL (FILE, xname, DECL); \ |
0 | 577 } while (0) |
578 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
579 #undef TARGET_ASM_DECLARE_CONSTANT_NAME |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
580 #define TARGET_ASM_DECLARE_CONSTANT_NAME darwin_asm_declare_constant_name |
0 | 581 |
582 /* Wrap new method names in quotes so the assembler doesn't gag. | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
583 Make Objective-C internal symbols local and in doing this, we need |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
584 to accommodate the name mangling done by c++ on file scope locals. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
585 |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
586 int darwin_label_is_anonymous_local_objc_name (const char *name); |
0 | 587 |
588 #undef ASM_OUTPUT_LABELREF | |
589 #define ASM_OUTPUT_LABELREF(FILE,NAME) \ | |
590 do { \ | |
591 const char *xname = (NAME); \ | |
592 if (! strcmp (xname, MACHOPIC_FUNCTION_BASE_NAME)) \ | |
593 machopic_output_function_base_name(FILE); \ | |
594 else if (xname[0] == '&' || xname[0] == '*') \ | |
595 { \ | |
596 int len = strlen (xname); \ | |
597 if (len > 6 && !strcmp ("$stub", xname + len - 5)) \ | |
598 machopic_validate_stub_or_non_lazy_ptr (xname); \ | |
599 else if (len > 7 && !strcmp ("$stub\"", xname + len - 6)) \ | |
600 machopic_validate_stub_or_non_lazy_ptr (xname); \ | |
601 else if (len > 14 && !strcmp ("$non_lazy_ptr", xname + len - 13)) \ | |
602 machopic_validate_stub_or_non_lazy_ptr (xname); \ | |
603 else if (len > 15 && !strcmp ("$non_lazy_ptr\"", xname + len - 14)) \ | |
604 machopic_validate_stub_or_non_lazy_ptr (xname); \ | |
605 if (xname[1] != '"' && name_needs_quotes (&xname[1])) \ | |
606 fprintf (FILE, "\"%s\"", &xname[1]); \ | |
607 else \ | |
608 fputs (&xname[1], FILE); \ | |
609 } \ | |
610 else if (xname[0] == '+' || xname[0] == '-') \ | |
611 fprintf (FILE, "\"%s\"", xname); \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
612 else if (darwin_label_is_anonymous_local_objc_name (xname)) \ |
0 | 613 fprintf (FILE, "L%s", xname); \ |
614 else if (!strncmp (xname, ".objc_class_name_", 17)) \ | |
615 fprintf (FILE, "%s", xname); \ | |
616 else if (xname[0] != '"' && name_needs_quotes (xname)) \ | |
617 fprintf (FILE, "\"%s\"", xname); \ | |
618 else \ | |
619 asm_fprintf (FILE, "%U%s", xname); \ | |
620 } while (0) | |
621 | |
622 /* Output before executable code. */ | |
623 #undef TEXT_SECTION_ASM_OP | |
624 #define TEXT_SECTION_ASM_OP "\t.text" | |
625 | |
626 /* Output before writable data. */ | |
627 | |
628 #undef DATA_SECTION_ASM_OP | |
629 #define DATA_SECTION_ASM_OP "\t.data" | |
630 | |
631 #undef ALIGN_ASM_OP | |
632 #define ALIGN_ASM_OP ".align" | |
633 | |
634 #undef ASM_OUTPUT_ALIGN | |
635 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ | |
636 if ((LOG) != 0) \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
637 fprintf (FILE, "\t%s\t%d\n", ALIGN_ASM_OP, (LOG)) |
0 | 638 |
639 /* The maximum alignment which the object file format can support in | |
640 bits. For Mach-O, this is 2^15 bytes. */ | |
641 | |
642 #undef MAX_OFILE_ALIGNMENT | |
643 #define MAX_OFILE_ALIGNMENT (0x8000 * 8) | |
644 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
645 #define L2_MAX_OFILE_ALIGNMENT 15 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
646 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
647 /* These are the three variants that emit referenced blank space. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
648 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
649 darwin_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
650 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
651 #undef ASM_OUTPUT_ALIGNED_DECL_LOCAL |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
652 #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
653 darwin_asm_output_aligned_decl_local \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
654 ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
655 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
656 #undef ASM_OUTPUT_ALIGNED_DECL_COMMON |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
657 #define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
658 darwin_asm_output_aligned_decl_common \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
659 ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
660 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
661 /* The generic version, archs should over-ride where required. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
662 #define MACHOPIC_NL_SYMBOL_PTR_SECTION ".non_lazy_symbol_pointer" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
663 |
0 | 664 /* Declare the section variables. */ |
665 #ifndef USED_FOR_TARGET | |
666 enum darwin_section_enum { | |
667 #define DEF_SECTION(NAME, FLAGS, DIRECTIVE, OBJC) NAME, | |
668 #include "darwin-sections.def" | |
669 #undef DEF_SECTION | |
670 NUM_DARWIN_SECTIONS | |
671 }; | |
672 extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; | |
673 #endif | |
674 | |
675 #undef TARGET_ASM_SELECT_SECTION | |
676 #define TARGET_ASM_SELECT_SECTION machopic_select_section | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
677 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
678 #undef TARGET_ASM_FUNCTION_SECTION |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
679 #define TARGET_ASM_FUNCTION_SECTION darwin_function_section |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
680 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
681 #undef TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
682 #define TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
683 darwin_function_switched_text_sections |
0 | 684 |
685 #undef TARGET_ASM_SELECT_RTX_SECTION | |
686 #define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section | |
687 #undef TARGET_ASM_UNIQUE_SECTION | |
688 #define TARGET_ASM_UNIQUE_SECTION darwin_unique_section | |
689 #undef TARGET_ASM_FUNCTION_RODATA_SECTION | |
690 #define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section | |
691 #undef TARGET_ASM_RELOC_RW_MASK | |
692 #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask | |
693 | |
694 | |
695 #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ | |
696 do { \ | |
697 if (FILE) { \ | |
698 if (MACHOPIC_INDIRECT) \ | |
699 fprintf (FILE, "\t.lazy_reference "); \ | |
700 else \ | |
701 fprintf (FILE, "\t.reference "); \ | |
702 assemble_name (FILE, NAME); \ | |
703 fprintf (FILE, "\n"); \ | |
704 } \ | |
705 } while (0) | |
706 | |
707 #define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ | |
708 do { \ | |
709 if (FILE) { \ | |
710 fprintf (FILE, "\t"); \ | |
711 assemble_name (FILE, NAME); \ | |
712 fprintf (FILE, "=0\n"); \ | |
713 (*targetm.asm_out.globalize_label) (FILE, NAME); \ | |
714 } \ | |
715 } while (0) | |
716 | |
717 /* Globalizing directive for a label. */ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
718 #define GLOBAL_ASM_OP "\t.globl " |
0 | 719 #define TARGET_ASM_GLOBALIZE_LABEL darwin_globalize_label |
720 | |
721 /* Emit an assembler directive to set visibility for a symbol. Used | |
722 to support visibility attribute and Darwin's private extern | |
723 feature. */ | |
724 #undef TARGET_ASM_ASSEMBLE_VISIBILITY | |
725 #define TARGET_ASM_ASSEMBLE_VISIBILITY darwin_assemble_visibility | |
726 | |
727 /* Extra attributes for Darwin. */ | |
728 #define SUBTARGET_ATTRIBUTE_TABLE \ | |
729 /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */ \ | |
730 { "apple_kext_compatibility", 0, 0, false, true, false, \ | |
731 darwin_handle_kext_attribute }, \ | |
732 { "weak_import", 0, 0, true, false, false, \ | |
733 darwin_handle_weak_import_attribute } | |
734 | |
735 #undef ASM_GENERATE_INTERNAL_LABEL | |
736 #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ | |
737 sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)) | |
738 | |
739 #undef TARGET_ASM_MARK_DECL_PRESERVED | |
740 #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved | |
741 | |
742 /* Set on a symbol with SYMBOL_FLAG_FUNCTION or | |
743 MACHO_SYMBOL_FLAG_VARIABLE to indicate that the function or | |
744 variable has been defined in this translation unit. | |
745 When porting Mach-O to new architectures you need to make | |
746 sure these aren't clobbered by the backend. */ | |
747 | |
748 #define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_MACH_DEP) | |
749 #define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_MACH_DEP) << 1) | |
750 | |
751 /* Set on a symbol to indicate when fix-and-continue style code | |
752 generation is being used and the symbol refers to a static symbol | |
753 that should be rebound from new instances of a translation unit to | |
754 the original instance of the data. */ | |
755 | |
756 #define MACHO_SYMBOL_STATIC ((SYMBOL_FLAG_MACH_DEP) << 2) | |
757 | |
758 /* Symbolic names for various things we might know about a symbol. */ | |
759 | |
760 enum machopic_addr_class { | |
761 MACHOPIC_UNDEFINED, | |
762 MACHOPIC_DEFINED_DATA, | |
763 MACHOPIC_UNDEFINED_DATA, | |
764 MACHOPIC_DEFINED_FUNCTION, | |
765 MACHOPIC_UNDEFINED_FUNCTION | |
766 }; | |
767 | |
768 /* Macros defining the various PIC cases. */ | |
769 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
770 #undef MACHO_DYNAMIC_NO_PIC_P |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
771 #define MACHO_DYNAMIC_NO_PIC_P (TARGET_MACHO_DYNAMIC_NO_PIC) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
772 #undef MACHOPIC_INDIRECT |
0 | 773 #define MACHOPIC_INDIRECT (flag_pic || MACHO_DYNAMIC_NO_PIC_P) |
774 #define MACHOPIC_JUST_INDIRECT (MACHO_DYNAMIC_NO_PIC_P) | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
775 #undef MACHOPIC_PURE |
0 | 776 #define MACHOPIC_PURE (flag_pic && ! MACHO_DYNAMIC_NO_PIC_P) |
777 | |
778 #undef TARGET_ENCODE_SECTION_INFO | |
779 #define TARGET_ENCODE_SECTION_INFO darwin_encode_section_info | |
780 #undef TARGET_STRIP_NAME_ENCODING | |
781 #define TARGET_STRIP_NAME_ENCODING default_strip_name_encoding | |
782 | |
783 #define GEN_BINDER_NAME_FOR_STUB(BUF,STUB,STUB_LENGTH) \ | |
784 do { \ | |
785 const char *const stub_ = (STUB); \ | |
786 char *buffer_ = (BUF); \ | |
787 strcpy (buffer_, stub_); \ | |
788 if (stub_[0] == '"') \ | |
789 { \ | |
790 strcpy (buffer_ + (STUB_LENGTH) - 1, "_binder\""); \ | |
791 } \ | |
792 else \ | |
793 { \ | |
794 strcpy (buffer_ + (STUB_LENGTH), "_binder"); \ | |
795 } \ | |
796 } while (0) | |
797 | |
798 #define GEN_SYMBOL_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) \ | |
799 do { \ | |
800 const char *const symbol_ = (SYMBOL); \ | |
801 char *buffer_ = (BUF); \ | |
802 if (name_needs_quotes (symbol_) && symbol_[0] != '"') \ | |
803 { \ | |
804 sprintf (buffer_, "\"%s\"", symbol_); \ | |
805 } \ | |
806 else \ | |
807 { \ | |
808 strcpy (buffer_, symbol_); \ | |
809 } \ | |
810 } while (0) | |
811 | |
812 /* Given a symbol name string, create the lazy pointer version | |
813 of the symbol name. */ | |
814 | |
815 #define GEN_LAZY_PTR_NAME_FOR_SYMBOL(BUF,SYMBOL,SYMBOL_LENGTH) \ | |
816 do { \ | |
817 const char *symbol_ = (SYMBOL); \ | |
818 char *buffer_ = (BUF); \ | |
819 if (symbol_[0] == '"') \ | |
820 { \ | |
821 strcpy (buffer_, "\"L"); \ | |
822 strcpy (buffer_ + 2, symbol_ + 1); \ | |
823 strcpy (buffer_ + (SYMBOL_LENGTH), "$lazy_ptr\""); \ | |
824 } \ | |
825 else if (name_needs_quotes (symbol_)) \ | |
826 { \ | |
827 strcpy (buffer_, "\"L"); \ | |
828 strcpy (buffer_ + 2, symbol_); \ | |
829 strcpy (buffer_ + (SYMBOL_LENGTH) + 2, "$lazy_ptr\""); \ | |
830 } \ | |
831 else \ | |
832 { \ | |
833 strcpy (buffer_, "L"); \ | |
834 strcpy (buffer_ + 1, symbol_); \ | |
835 strcpy (buffer_ + (SYMBOL_LENGTH) + 1, "$lazy_ptr"); \ | |
836 } \ | |
837 } while (0) | |
838 | |
839 #define EH_FRAME_SECTION_NAME "__TEXT" | |
840 #define EH_FRAME_SECTION_ATTR ",coalesced,no_toc+strip_static_syms+live_support" | |
841 | |
842 /* Java runtime class list. */ | |
843 #define JCR_SECTION_NAME "__DATA,jcr,regular,no_dead_strip" | |
844 | |
845 #undef ASM_PREFERRED_EH_DATA_FORMAT | |
846 #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ | |
847 (((CODE) == 2 && (GLOBAL) == 1) \ | |
848 ? (DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4) : \ | |
849 ((CODE) == 1 || (GLOBAL) == 0) ? DW_EH_PE_pcrel : DW_EH_PE_absptr) | |
850 | |
851 #define ASM_OUTPUT_DWARF_DELTA(FILE,SIZE,LABEL1,LABEL2) \ | |
852 darwin_asm_output_dwarf_delta (FILE, SIZE, LABEL1, LABEL2) | |
853 | |
854 #define ASM_OUTPUT_DWARF_OFFSET(FILE,SIZE,LABEL,BASE) \ | |
855 darwin_asm_output_dwarf_offset (FILE, SIZE, LABEL, BASE) | |
856 | |
857 #define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(ASM_OUT_FILE, ENCODING, SIZE, ADDR, DONE) \ | |
858 if (ENCODING == ASM_PREFERRED_EH_DATA_FORMAT (2, 1)) { \ | |
859 darwin_non_lazy_pcrel (ASM_OUT_FILE, ADDR); \ | |
860 goto DONE; \ | |
861 } | |
862 | |
863 /* Experimentally, putting jump tables in text is faster on SPEC. | |
864 Also this is needed for correctness for coalesced functions. */ | |
865 | |
866 #ifndef JUMP_TABLES_IN_TEXT_SECTION | |
867 #define JUMP_TABLES_IN_TEXT_SECTION 1 | |
868 #endif | |
869 | |
870 #define TARGET_TERMINATE_DW2_EH_FRAME_INFO false | |
871 | |
872 #define TARGET_ASM_INIT_SECTIONS darwin_init_sections | |
873 #undef TARGET_ASM_NAMED_SECTION | |
874 #define TARGET_ASM_NAMED_SECTION darwin_asm_named_section | |
875 | |
876 #define DARWIN_REGISTER_TARGET_PRAGMAS() \ | |
877 do { \ | |
878 if (!flag_preprocess_only) \ | |
879 cpp_register_pragma (parse_in, NULL, "mark", \ | |
880 darwin_pragma_ignore, false); \ | |
881 c_register_pragma (0, "options", darwin_pragma_options); \ | |
882 c_register_pragma (0, "segment", darwin_pragma_ignore); \ | |
883 c_register_pragma (0, "unused", darwin_pragma_unused); \ | |
884 c_register_pragma (0, "ms_struct", darwin_pragma_ms_struct); \ | |
885 } while (0) | |
886 | |
887 #undef ASM_APP_ON | |
888 #define ASM_APP_ON "" | |
889 #undef ASM_APP_OFF | |
890 #define ASM_APP_OFF "" | |
891 | |
892 void darwin_register_frameworks (const char *, const char *, int); | |
893 void darwin_register_objc_includes (const char *, const char *, int); | |
894 #define TARGET_EXTRA_PRE_INCLUDES darwin_register_objc_includes | |
895 #define TARGET_EXTRA_INCLUDES darwin_register_frameworks | |
896 | |
897 void add_framework_path (char *); | |
898 #define TARGET_OPTF add_framework_path | |
899 | |
900 #define TARGET_POSIX_IO | |
901 | |
902 /* All new versions of Darwin have C99 functions. */ | |
903 | |
904 #define TARGET_C99_FUNCTIONS 1 | |
905 | |
906 #define WINT_TYPE "int" | |
907 | |
908 /* Every program on darwin links against libSystem which contains the pthread | |
909 routines, so there's no need to explicitly call out when doing threaded | |
910 work. */ | |
911 | |
912 #undef GOMP_SELF_SPECS | |
913 #define GOMP_SELF_SPECS "" | |
914 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
915 /* Darwin disables section anchors by default. |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
916 They should be enabled per arch where support exists in that arch. */ |
0 | 917 #define TARGET_ASM_OUTPUT_ANCHOR NULL |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
918 #define DARWIN_SECTION_ANCHORS 0 |
0 | 919 |
920 /* Attempt to turn on execute permission for the stack. This may be | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
921 used by TARGET_TRAMPOLINE_INIT if the target needs it (that is, |
0 | 922 if the target machine can change execute permissions on a page). |
923 | |
924 There is no way to query the execute permission of the stack, so | |
925 we always issue the mprotect() call. | |
926 | |
927 Unfortunately it is not possible to make this namespace-clean. | |
928 | |
929 Also note that no errors should be emitted by this code; it is | |
930 considered dangerous for library calls to send messages to | |
931 stdout/stderr. */ | |
932 | |
933 #define ENABLE_EXECUTE_STACK \ | |
934 extern void __enable_execute_stack (void *); \ | |
935 void \ | |
936 __enable_execute_stack (void *addr) \ | |
937 { \ | |
938 extern int mprotect (void *, size_t, int); \ | |
939 extern int getpagesize (void); \ | |
940 static int size; \ | |
941 static long mask; \ | |
942 \ | |
943 char *page, *end; \ | |
944 \ | |
945 if (size == 0) \ | |
946 { \ | |
947 size = getpagesize(); \ | |
948 mask = ~((long) size - 1); \ | |
949 } \ | |
950 \ | |
951 page = (char *) (((long) addr) & mask); \ | |
952 end = (char *) ((((long) (addr + (TARGET_64BIT ? 48 : 40))) & mask) + size); \ | |
953 \ | |
954 /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */ \ | |
955 (void) mprotect (page, end - page, 7); \ | |
956 } | |
957 | |
958 /* For Apple KEXTs, we make the constructors return this to match gcc | |
959 2.95. */ | |
960 #define TARGET_CXX_CDTOR_RETURNS_THIS (darwin_kextabi_p) | |
961 #define TARGET_KEXTABI flag_apple_kext | |
962 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
963 /* We have target-specific builtins. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
964 #define TARGET_FOLD_BUILTIN darwin_fold_builtin |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
965 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
966 #define TARGET_OBJC_CONSTRUCT_STRING_OBJECT \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
967 darwin_objc_construct_string |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
968 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
969 #define TARGET_STRING_OBJECT_REF_TYPE_P \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
970 darwin_cfstring_ref_p |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
971 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
972 #define TARGET_N_FORMAT_TYPES 1 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
973 #define TARGET_FORMAT_TYPES darwin_additional_format_types |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
974 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
975 #define TARGET_CHECK_STRING_OBJECT_FORMAT_ARG \ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
976 darwin_check_cfstring_format_arg |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
977 |
0 | 978 #define TARGET_HAS_TARGETCM 1 |
979 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
980 #ifndef USED_FOR_TARGET |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
981 extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **); |
0 | 982 #define GCC_DRIVER_HOST_INITIALIZATION \ |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
983 darwin_driver_init (&decoded_options_count, &decoded_options) |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
984 #endif |
0 | 985 |
986 /* The Apple assembler and linker do not support constructor priorities. */ | |
987 #undef SUPPORTS_INIT_PRIORITY | |
988 #define SUPPORTS_INIT_PRIORITY 0 | |
989 | |
990 #endif /* CONFIG_DARWIN_H */ |