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