1 /* ===-- apple_versioning.c - Adds versioning symbols for ld ---------------=== 2 * 3 * The LLVM Compiler Infrastructure 4 * 5 * This file is distributed under the University of Illinois Open Source 6 * License. See LICENSE.TXT for details. 7 * 8 * ===----------------------------------------------------------------------=== 9 */ 10 11 12 13 #if __APPLE__ 14 #if __arm__ 15 #define NOT_HERE_BEFORE_10_6(sym) 16 #elif __ppc__ 17 #define NOT_HERE_BEFORE_10_6(sym) \ 18 extern const char sym##_tmp3 __asm("$ld$hide$os10.3$_" #sym ); \ 19 __attribute__((visibility("default"))) const char sym##_tmp3 = 0; \ 20 extern const char sym##_tmp4 __asm("$ld$hide$os10.4$_" #sym ); \ 21 __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \ 22 extern const char sym##_tmp5 __asm("$ld$hide$os10.5$_" #sym ); \ 23 __attribute__((visibility("default"))) const char sym##_tmp5 = 0; 24 #else 25 #define NOT_HERE_BEFORE_10_6(sym) \ 26 extern const char sym##_tmp4 __asm("$ld$hide$os10.4$_" #sym ); \ 27 __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \ 28 extern const char sym##_tmp5 __asm("$ld$hide$os10.5$_" #sym ); \ 29 __attribute__((visibility("default"))) const char sym##_tmp5 = 0; 30 #endif /* __ppc__ */ 31 32 33 /* Symbols in libSystem.dylib in 10.6 and later, 34 * but are in libgcc_s.dylib in earlier versions 35 */ 36 37 NOT_HERE_BEFORE_10_6(__absvdi2) 38 NOT_HERE_BEFORE_10_6(__absvsi2) 39 NOT_HERE_BEFORE_10_6(__absvti2) 40 NOT_HERE_BEFORE_10_6(__addvdi3) 41 NOT_HERE_BEFORE_10_6(__addvsi3) 42 NOT_HERE_BEFORE_10_6(__addvti3) 43 NOT_HERE_BEFORE_10_6(__ashldi3) 44 NOT_HERE_BEFORE_10_6(__ashlti3) 45 NOT_HERE_BEFORE_10_6(__ashrdi3) 46 NOT_HERE_BEFORE_10_6(__ashrti3) 47 NOT_HERE_BEFORE_10_6(__clear_cache) 48 NOT_HERE_BEFORE_10_6(__clzdi2) 49 NOT_HERE_BEFORE_10_6(__clzsi2) 50 NOT_HERE_BEFORE_10_6(__clzti2) 51 NOT_HERE_BEFORE_10_6(__cmpdi2) 52 NOT_HERE_BEFORE_10_6(__cmpti2) 53 NOT_HERE_BEFORE_10_6(__ctzdi2) 54 NOT_HERE_BEFORE_10_6(__ctzsi2) 55 NOT_HERE_BEFORE_10_6(__ctzti2) 56 NOT_HERE_BEFORE_10_6(__divdc3) 57 NOT_HERE_BEFORE_10_6(__divdi3) 58 NOT_HERE_BEFORE_10_6(__divsc3) 59 NOT_HERE_BEFORE_10_6(__divtc3) 60 NOT_HERE_BEFORE_10_6(__divti3) 61 NOT_HERE_BEFORE_10_6(__divxc3) 62 NOT_HERE_BEFORE_10_6(__enable_execute_stack) 63 NOT_HERE_BEFORE_10_6(__ffsdi2) 64 NOT_HERE_BEFORE_10_6(__ffsti2) 65 NOT_HERE_BEFORE_10_6(__fixdfdi) 66 NOT_HERE_BEFORE_10_6(__fixdfti) 67 NOT_HERE_BEFORE_10_6(__fixsfdi) 68 NOT_HERE_BEFORE_10_6(__fixsfti) 69 NOT_HERE_BEFORE_10_6(__fixtfdi) 70 NOT_HERE_BEFORE_10_6(__fixunsdfdi) 71 NOT_HERE_BEFORE_10_6(__fixunsdfsi) 72 NOT_HERE_BEFORE_10_6(__fixunsdfti) 73 NOT_HERE_BEFORE_10_6(__fixunssfdi) 74 NOT_HERE_BEFORE_10_6(__fixunssfsi) 75 NOT_HERE_BEFORE_10_6(__fixunssfti) 76 NOT_HERE_BEFORE_10_6(__fixunstfdi) 77 NOT_HERE_BEFORE_10_6(__fixunsxfdi) 78 NOT_HERE_BEFORE_10_6(__fixunsxfsi) 79 NOT_HERE_BEFORE_10_6(__fixunsxfti) 80 NOT_HERE_BEFORE_10_6(__fixxfdi) 81 NOT_HERE_BEFORE_10_6(__fixxfti) 82 NOT_HERE_BEFORE_10_6(__floatdidf) 83 NOT_HERE_BEFORE_10_6(__floatdisf) 84 NOT_HERE_BEFORE_10_6(__floatditf) 85 NOT_HERE_BEFORE_10_6(__floatdixf) 86 NOT_HERE_BEFORE_10_6(__floattidf) 87 NOT_HERE_BEFORE_10_6(__floattisf) 88 NOT_HERE_BEFORE_10_6(__floattixf) 89 NOT_HERE_BEFORE_10_6(__floatundidf) 90 NOT_HERE_BEFORE_10_6(__floatundisf) 91 NOT_HERE_BEFORE_10_6(__floatunditf) 92 NOT_HERE_BEFORE_10_6(__floatundixf) 93 NOT_HERE_BEFORE_10_6(__floatuntidf) 94 NOT_HERE_BEFORE_10_6(__floatuntisf) 95 NOT_HERE_BEFORE_10_6(__floatuntixf) 96 NOT_HERE_BEFORE_10_6(__gcc_personality_v0) 97 NOT_HERE_BEFORE_10_6(__lshrdi3) 98 NOT_HERE_BEFORE_10_6(__lshrti3) 99 NOT_HERE_BEFORE_10_6(__moddi3) 100 NOT_HERE_BEFORE_10_6(__modti3) 101 NOT_HERE_BEFORE_10_6(__muldc3) 102 NOT_HERE_BEFORE_10_6(__muldi3) 103 NOT_HERE_BEFORE_10_6(__mulsc3) 104 NOT_HERE_BEFORE_10_6(__multc3) 105 NOT_HERE_BEFORE_10_6(__multi3) 106 NOT_HERE_BEFORE_10_6(__mulvdi3) 107 NOT_HERE_BEFORE_10_6(__mulvsi3) 108 NOT_HERE_BEFORE_10_6(__mulvti3) 109 NOT_HERE_BEFORE_10_6(__mulxc3) 110 NOT_HERE_BEFORE_10_6(__negdi2) 111 NOT_HERE_BEFORE_10_6(__negti2) 112 NOT_HERE_BEFORE_10_6(__negvdi2) 113 NOT_HERE_BEFORE_10_6(__negvsi2) 114 NOT_HERE_BEFORE_10_6(__negvti2) 115 NOT_HERE_BEFORE_10_6(__paritydi2) 116 NOT_HERE_BEFORE_10_6(__paritysi2) 117 NOT_HERE_BEFORE_10_6(__parityti2) 118 NOT_HERE_BEFORE_10_6(__popcountdi2) 119 NOT_HERE_BEFORE_10_6(__popcountsi2) 120 NOT_HERE_BEFORE_10_6(__popcountti2) 121 NOT_HERE_BEFORE_10_6(__powidf2) 122 NOT_HERE_BEFORE_10_6(__powisf2) 123 NOT_HERE_BEFORE_10_6(__powitf2) 124 NOT_HERE_BEFORE_10_6(__powixf2) 125 NOT_HERE_BEFORE_10_6(__subvdi3) 126 NOT_HERE_BEFORE_10_6(__subvsi3) 127 NOT_HERE_BEFORE_10_6(__subvti3) 128 NOT_HERE_BEFORE_10_6(__ucmpdi2) 129 NOT_HERE_BEFORE_10_6(__ucmpti2) 130 NOT_HERE_BEFORE_10_6(__udivdi3) 131 NOT_HERE_BEFORE_10_6(__udivmoddi4) 132 NOT_HERE_BEFORE_10_6(__udivmodti4) 133 NOT_HERE_BEFORE_10_6(__udivti3) 134 NOT_HERE_BEFORE_10_6(__umoddi3) 135 NOT_HERE_BEFORE_10_6(__umodti3) 136 137 138 #if __ppc__ 139 NOT_HERE_BEFORE_10_6(__gcc_qadd) 140 NOT_HERE_BEFORE_10_6(__gcc_qdiv) 141 NOT_HERE_BEFORE_10_6(__gcc_qmul) 142 NOT_HERE_BEFORE_10_6(__gcc_qsub) 143 NOT_HERE_BEFORE_10_6(__trampoline_setup) 144 #endif /* __ppc__ */ 145 146 #else /* !__APPLE__ */ 147 148 extern int avoid_empty_file; 149 150 #endif /* !__APPLE__*/ 151