xref: /aosp_15_r20/external/compiler-rt/lib/builtins/apple_versioning.c (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robot /* ===-- apple_versioning.c - Adds versioning symbols for ld ---------------===
2*7c3d14c8STreehugger Robot  *
3*7c3d14c8STreehugger Robot  *                     The LLVM Compiler Infrastructure
4*7c3d14c8STreehugger Robot  *
5*7c3d14c8STreehugger Robot  * This file is dual licensed under the MIT and the University of Illinois Open
6*7c3d14c8STreehugger Robot  * Source Licenses. See LICENSE.TXT for details.
7*7c3d14c8STreehugger Robot  *
8*7c3d14c8STreehugger Robot  * ===----------------------------------------------------------------------===
9*7c3d14c8STreehugger Robot  */
10*7c3d14c8STreehugger Robot 
11*7c3d14c8STreehugger Robot 
12*7c3d14c8STreehugger Robot #if __APPLE__
13*7c3d14c8STreehugger Robot   #include <Availability.h>
14*7c3d14c8STreehugger Robot 
15*7c3d14c8STreehugger Robot   #if __IPHONE_OS_VERSION_MIN_REQUIRED
16*7c3d14c8STreehugger Robot     #define NOT_HERE_BEFORE_10_6(sym)
17*7c3d14c8STreehugger Robot     #define NOT_HERE_IN_10_8_AND_EARLIER(sym) \
18*7c3d14c8STreehugger Robot         extern const char sym##_tmp61 __asm("$ld$hide$os6.1$_" #sym ); \
19*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp61 = 0; \
20*7c3d14c8STreehugger Robot         extern const char sym##_tmp60 __asm("$ld$hide$os6.0$_" #sym ); \
21*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp60 = 0; \
22*7c3d14c8STreehugger Robot         extern const char sym##_tmp51 __asm("$ld$hide$os5.1$_" #sym ); \
23*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp51 = 0; \
24*7c3d14c8STreehugger Robot         extern const char sym##_tmp50 __asm("$ld$hide$os5.0$_" #sym ); \
25*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp50 = 0;
26*7c3d14c8STreehugger Robot   #else
27*7c3d14c8STreehugger Robot     #define NOT_HERE_BEFORE_10_6(sym) \
28*7c3d14c8STreehugger Robot          extern const char sym##_tmp4 __asm("$ld$hide$os10.4$_" #sym ); \
29*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \
30*7c3d14c8STreehugger Robot         extern const char sym##_tmp5 __asm("$ld$hide$os10.5$_" #sym ); \
31*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp5 = 0;
32*7c3d14c8STreehugger Robot     #define NOT_HERE_IN_10_8_AND_EARLIER(sym) \
33*7c3d14c8STreehugger Robot          extern const char sym##_tmp8 __asm("$ld$hide$os10.8$_" #sym ); \
34*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp8 = 0; \
35*7c3d14c8STreehugger Robot         extern const char sym##_tmp7 __asm("$ld$hide$os10.7$_" #sym ); \
36*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp7 = 0; \
37*7c3d14c8STreehugger Robot         extern const char sym##_tmp6 __asm("$ld$hide$os10.6$_" #sym ); \
38*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp6 = 0;
39*7c3d14c8STreehugger Robot   #endif
40*7c3d14c8STreehugger Robot 
41*7c3d14c8STreehugger Robot 
42*7c3d14c8STreehugger Robot /* Symbols in libSystem.dylib in 10.6 and later,
43*7c3d14c8STreehugger Robot  *  but are in libgcc_s.dylib in earlier versions
44*7c3d14c8STreehugger Robot  */
45*7c3d14c8STreehugger Robot 
46*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__absvdi2)
47*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__absvsi2)
48*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__absvti2)
49*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__addvdi3)
50*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__addvsi3)
51*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__addvti3)
52*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ashldi3)
53*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ashlti3)
54*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ashrdi3)
55*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ashrti3)
56*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__clear_cache)
57*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__clzdi2)
58*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__clzsi2)
59*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__clzti2)
60*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__cmpdi2)
61*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__cmpti2)
62*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ctzdi2)
63*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ctzsi2)
64*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ctzti2)
65*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divdc3)
66*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divdi3)
67*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divsc3)
68*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divtc3)
69*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divti3)
70*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__divxc3)
71*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__enable_execute_stack)
72*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ffsdi2)
73*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ffsti2)
74*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixdfdi)
75*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixdfti)
76*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixsfdi)
77*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixsfti)
78*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixtfdi)
79*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsdfdi)
80*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsdfsi)
81*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsdfti)
82*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunssfdi)
83*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunssfsi)
84*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunssfti)
85*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunstfdi)
86*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsxfdi)
87*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsxfsi)
88*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixunsxfti)
89*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixxfdi)
90*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__fixxfti)
91*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatdidf)
92*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatdisf)
93*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatditf)
94*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatdixf)
95*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floattidf)
96*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floattisf)
97*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floattixf)
98*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatundidf)
99*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatundisf)
100*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatunditf)
101*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatundixf)
102*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatuntidf)
103*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatuntisf)
104*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__floatuntixf)
105*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__gcc_personality_v0)
106*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__lshrdi3)
107*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__lshrti3)
108*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__moddi3)
109*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__modti3)
110*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__muldc3)
111*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__muldi3)
112*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__mulsc3)
113*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__multc3)
114*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__multi3)
115*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__mulvdi3)
116*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__mulvsi3)
117*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__mulvti3)
118*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__mulxc3)
119*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__negdi2)
120*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__negti2)
121*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__negvdi2)
122*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__negvsi2)
123*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__negvti2)
124*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__paritydi2)
125*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__paritysi2)
126*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__parityti2)
127*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__popcountdi2)
128*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__popcountsi2)
129*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__popcountti2)
130*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__powidf2)
131*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__powisf2)
132*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__powitf2)
133*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__powixf2)
134*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__subvdi3)
135*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__subvsi3)
136*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__subvti3)
137*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ucmpdi2)
138*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__ucmpti2)
139*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__udivdi3)
140*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__udivmoddi4)
141*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__udivmodti4)
142*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__udivti3)
143*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__umoddi3)
144*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__umodti3)
145*7c3d14c8STreehugger Robot 
146*7c3d14c8STreehugger Robot 
147*7c3d14c8STreehugger Robot #if __ppc__
148*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__gcc_qadd)
149*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__gcc_qdiv)
150*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__gcc_qmul)
151*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__gcc_qsub)
152*7c3d14c8STreehugger Robot NOT_HERE_BEFORE_10_6(__trampoline_setup)
153*7c3d14c8STreehugger Robot #endif /* __ppc__ */
154*7c3d14c8STreehugger Robot 
155*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_compare_exchange)
156*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_compare_exchange_1)
157*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_compare_exchange_2)
158*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_compare_exchange_4)
159*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_compare_exchange_8)
160*7c3d14c8STreehugger Robot 
161*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_exchange)
162*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_exchange_1)
163*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_exchange_2)
164*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_exchange_4)
165*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_exchange_8)
166*7c3d14c8STreehugger Robot 
167*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_add_1)
168*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_add_2)
169*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_add_4)
170*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_add_8)
171*7c3d14c8STreehugger Robot 
172*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_and_1)
173*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_and_2)
174*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_and_4)
175*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_and_8)
176*7c3d14c8STreehugger Robot 
177*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_or_1)
178*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_or_2)
179*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_or_4)
180*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_or_8)
181*7c3d14c8STreehugger Robot 
182*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_sub_1)
183*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_sub_2)
184*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_sub_4)
185*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_sub_8)
186*7c3d14c8STreehugger Robot 
187*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_xor_1)
188*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_xor_2)
189*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_xor_4)
190*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_fetch_xor_8)
191*7c3d14c8STreehugger Robot 
192*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_load)
193*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_load_1)
194*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_load_2)
195*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_load_4)
196*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_load_8)
197*7c3d14c8STreehugger Robot 
198*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_store)
199*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_store_1)
200*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_store_2)
201*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_store_4)
202*7c3d14c8STreehugger Robot NOT_HERE_IN_10_8_AND_EARLIER(__atomic_store_8)
203*7c3d14c8STreehugger Robot 
204*7c3d14c8STreehugger Robot 
205*7c3d14c8STreehugger Robot #if __arm__ && __DYNAMIC__
206*7c3d14c8STreehugger Robot    #define NOT_HERE_UNTIL_AFTER_4_3(sym) \
207*7c3d14c8STreehugger Robot         extern const char sym##_tmp1 __asm("$ld$hide$os3.0$_" #sym ); \
208*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp1 = 0; \
209*7c3d14c8STreehugger Robot         extern const char sym##_tmp2 __asm("$ld$hide$os3.1$_" #sym ); \
210*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp2 = 0; \
211*7c3d14c8STreehugger Robot         extern const char sym##_tmp3 __asm("$ld$hide$os3.2$_" #sym ); \
212*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp3 = 0; \
213*7c3d14c8STreehugger Robot         extern const char sym##_tmp4 __asm("$ld$hide$os4.0$_" #sym ); \
214*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \
215*7c3d14c8STreehugger Robot         extern const char sym##_tmp5 __asm("$ld$hide$os4.1$_" #sym ); \
216*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp5 = 0; \
217*7c3d14c8STreehugger Robot         extern const char sym##_tmp6 __asm("$ld$hide$os4.2$_" #sym ); \
218*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp6 = 0; \
219*7c3d14c8STreehugger Robot         extern const char sym##_tmp7 __asm("$ld$hide$os4.3$_" #sym ); \
220*7c3d14c8STreehugger Robot             __attribute__((visibility("default"))) const char sym##_tmp7 = 0;
221*7c3d14c8STreehugger Robot 
222*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__absvdi2)
223*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__absvsi2)
224*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__adddf3)
225*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__adddf3vfp)
226*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__addsf3)
227*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__addsf3vfp)
228*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__addvdi3)
229*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__addvsi3)
230*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ashldi3)
231*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ashrdi3)
232*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__bswapdi2)
233*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__bswapsi2)
234*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__clzdi2)
235*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__clzsi2)
236*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__cmpdi2)
237*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ctzdi2)
238*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ctzsi2)
239*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divdc3)
240*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divdf3)
241*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divdf3vfp)
242*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divdi3)
243*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divsc3)
244*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divsf3)
245*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divsf3vfp)
246*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divsi3)
247*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__eqdf2)
248*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__eqdf2vfp)
249*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__eqsf2)
250*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__eqsf2vfp)
251*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2)
252*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__extendsfdf2vfp)
253*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ffsdi2)
254*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixdfdi)
255*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixdfsi)
256*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixdfsivfp)
257*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixsfdi)
258*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixsfsi)
259*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixsfsivfp)
260*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfdi)
261*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsi)
262*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunsdfsivfp)
263*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunssfdi)
264*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsi)
265*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__fixunssfsivfp)
266*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatdidf)
267*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatdisf)
268*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatsidf)
269*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatsidfvfp)
270*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatsisf)
271*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatsisfvfp)
272*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatundidf)
273*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatundisf)
274*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatunsidf)
275*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatunsisf)
276*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatunssidfvfp)
277*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__floatunssisfvfp)
278*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gedf2)
279*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gedf2vfp)
280*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gesf2)
281*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gesf2vfp)
282*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gtdf2)
283*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gtdf2vfp)
284*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gtsf2)
285*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__gtsf2vfp)
286*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ledf2)
287*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ledf2vfp)
288*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__lesf2)
289*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__lesf2vfp)
290*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__lshrdi3)
291*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ltdf2)
292*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ltdf2vfp)
293*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ltsf2)
294*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ltsf2vfp)
295*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__moddi3)
296*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__modsi3)
297*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__muldc3)
298*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__muldf3)
299*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__muldf3vfp)
300*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__muldi3)
301*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__mulsc3)
302*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__mulsf3)
303*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__mulsf3vfp)
304*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__mulvdi3)
305*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__mulvsi3)
306*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__nedf2)
307*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__nedf2vfp)
308*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__negdi2)
309*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__negvdi2)
310*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__negvsi2)
311*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__nesf2)
312*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__nesf2vfp)
313*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__paritydi2)
314*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__paritysi2)
315*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__popcountdi2)
316*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__popcountsi2)
317*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__powidf2)
318*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__powisf2)
319*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subdf3)
320*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subdf3vfp)
321*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subsf3)
322*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subsf3vfp)
323*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subvdi3)
324*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__subvsi3)
325*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2)
326*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__truncdfsf2vfp)
327*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__ucmpdi2)
328*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__udivdi3)
329*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__udivmoddi4)
330*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__udivsi3)
331*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__umoddi3)
332*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__umodsi3)
333*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__unorddf2)
334*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__unorddf2vfp)
335*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__unordsf2)
336*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__unordsf2vfp)
337*7c3d14c8STreehugger Robot 
338*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__divmodsi4)
339*7c3d14c8STreehugger Robot NOT_HERE_UNTIL_AFTER_4_3(__udivmodsi4)
340*7c3d14c8STreehugger Robot #endif // __arm__ && __DYNAMIC__
341*7c3d14c8STreehugger Robot 
342*7c3d14c8STreehugger Robot 
343*7c3d14c8STreehugger Robot 
344*7c3d14c8STreehugger Robot 
345*7c3d14c8STreehugger Robot 
346*7c3d14c8STreehugger Robot #else /* !__APPLE__ */
347*7c3d14c8STreehugger Robot 
348*7c3d14c8STreehugger Robot extern int avoid_empty_file;
349*7c3d14c8STreehugger Robot 
350*7c3d14c8STreehugger Robot #endif /* !__APPLE__*/
351