Home | History | Annotate | Download | only in lib
      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