Home | History | Annotate | Line # | Download | only in i386
      1 # Copyright (C) 2008-2024 Free Software Foundation, Inc.
      2 #
      3 # This file is part of GCC.
      4 #
      5 # GCC is free software; you can redistribute it and/or modify
      6 # it under the terms of the GNU General Public License as published by
      7 # the Free Software Foundation; either version 3, or (at your option)
      8 # any later version.
      9 #
     10 # GCC is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU General Public License
     16 # along with GCC; see the file COPYING3.  If not see
     17 # <http://www.gnu.org/licenses/>.
     18 
     19 # In order to work around the very problems that force us to now generally
     20 # create a libgcc.so, glibc reexported a number of routines from libgcc.a.
     21 # By now choosing the same version tags for these specific routines, we
     22 # maintain enough binary compatibility to allow future versions of glibc
     23 # to defer implementation of these routines to libgcc.so via DT_AUXILIARY.
     24 
     25 %ifndef __x86_64__
     26 %exclude {
     27   __divdi3
     28   __moddi3
     29   __udivdi3
     30   __umoddi3
     31   __register_frame
     32   __register_frame_table
     33   __deregister_frame
     34   __register_frame_info
     35   __deregister_frame_info
     36   __frame_state_for
     37   __register_frame_info_table
     38 }
     39 
     40 %inherit GCC_3.0 GLIBC_2.0
     41 GLIBC_2.0 {
     42   # Sampling of DImode arithmetic used by (at least) i386 and m68k.
     43   __divdi3
     44   __moddi3
     45   __udivdi3
     46   __umoddi3
     47 
     48   # Exception handling support functions used by most everyone.
     49   __register_frame
     50   __register_frame_table
     51   __deregister_frame
     52   __register_frame_info
     53   __deregister_frame_info
     54   __frame_state_for
     55   __register_frame_info_table
     56 }
     57 %endif
     58 
     59 # 128 bit long double support was introduced with GCC 4.3.0 to 64bit
     60 # and with GCC 4.4.0 to 32bit.  These lines make the symbols to get
     61 # a @@GCC_4.3.0 or @@GCC_4.4.0 attached.
     62 
     63 %exclude {
     64   __addtf3
     65   __divtc3
     66   __divtf3
     67   __eqtf2
     68   __extenddftf2
     69   __extendsftf2
     70   __extendxftf2
     71   __fixtfdi
     72   __fixtfsi
     73   __fixtfti
     74   __fixunstfdi
     75   __fixunstfsi
     76   __fixunstfti
     77   __floatditf
     78   __floatsitf
     79   __floattitf
     80   __floatunditf
     81   __floatunsitf
     82   __floatuntitf
     83   __getf2
     84   __gttf2
     85   __letf2
     86   __lttf2
     87   __multc3
     88   __multf3
     89   __negtf2
     90   __netf2
     91   __powitf2
     92   __subtf3
     93   __trunctfdf2
     94   __trunctfsf2
     95   __trunctfxf2
     96   __unordtf2
     97 }
     98 
     99 %ifdef __x86_64__
    100 # Those symbols had improper versions when they were added to gcc 4.3.0.
    101 # We corrected the default version to GCC_4.3.0.  But we keep the old
    102 # version for backward binary compatibility. 
    103 GCC_3.0 {
    104   __gttf2
    105   __lttf2
    106   __netf2
    107 }
    108 
    109 GCC_4.0.0 {
    110   __divtc3
    111   __multc3
    112   __powitf2
    113 }
    114 
    115 GCC_4.3.0 {
    116   __addtf3
    117   __divtc3
    118   __divtf3
    119   __eqtf2
    120   __extenddftf2
    121   __extendsftf2
    122   __extendxftf2
    123   __fixtfdi
    124   __fixtfsi
    125   __fixtfti
    126   __fixunstfdi
    127   __fixunstfsi
    128   __fixunstfti
    129   __floatditf
    130   __floatsitf
    131   __floattitf
    132   __floatunditf
    133   __floatunsitf
    134   __floatuntitf
    135   __getf2
    136   __gttf2
    137   __letf2
    138   __lttf2
    139   __multc3
    140   __multf3
    141   __negtf2
    142   __netf2
    143   __powitf2
    144   __subtf3
    145   __trunctfdf2
    146   __trunctfsf2
    147   __trunctfxf2
    148   __unordtf2
    149 }
    150 
    151 GCC_4.8.0 {
    152   __cpu_model
    153   __cpu_indicator_init
    154 }
    155 %else
    156 GCC_4.4.0 {
    157   __addtf3
    158   __copysigntf3
    159   __divtc3
    160   __divtf3
    161   __eqtf2
    162   __extenddftf2
    163   __extendsftf2
    164   __fabstf2
    165   __fixtfdi
    166   __fixtfsi
    167   __fixunstfdi
    168   __fixunstfsi
    169   __floatditf
    170   __floatsitf
    171   __floatunditf
    172   __floatunsitf
    173   __getf2
    174   __gttf2
    175   __letf2
    176   __lttf2
    177   __multc3
    178   __multf3
    179   __negtf2
    180   __netf2
    181   __powitf2
    182   __subtf3
    183   __trunctfdf2
    184   __trunctfsf2
    185   __trunctfxf2
    186   __unordtf2
    187 }
    188 GCC_4.5.0 {
    189   __extendxftf2
    190 }
    191 
    192 GCC_4.8.0 {
    193   __cpu_model
    194   __cpu_indicator_init
    195 }
    196 %endif
    197 
    198 %inherit GCC_12.0.0 GCC_7.0.0
    199 GCC_12.0.0 {
    200   __divhc3
    201   __mulhc3
    202   __eqhf2
    203   __nehf2
    204   __extendhfdf2
    205   __extendhfsf2
    206   __extendhftf2
    207   __extendhfxf2
    208   __fixhfti
    209   __fixunshfti
    210   __floattihf
    211   __floatuntihf
    212   __truncdfhf2
    213   __truncsfhf2
    214   __trunctfhf2
    215   __truncxfhf2
    216 }
    217 
    218 %inherit GCC_13.0.0 GCC_12.0.0
    219 GCC_13.0.0 {
    220   __extendbfsf2
    221   __floattibf
    222   __floatuntibf
    223   __truncdfbf2
    224   __truncsfbf2
    225   __trunctfbf2
    226   __truncxfbf2
    227   __trunchfbf2
    228 }
    229 
    230 %inherit GCC_14.0.0 GCC_13.0.0
    231 GCC_14.0.0 {
    232   __fixxfbitint
    233   __fixtfbitint
    234   __floatbitintbf
    235   __floatbitinthf
    236   __floatbitintxf
    237   __floatbitinttf
    238 }
    239 
    240 # Please notify the maintainers of libgcc-{bsd,darwin,sol2}.ver of any
    241 # additions.  Those version scripts usually need to be kept in sync with
    242 # libgcc-glibc.ver.
    243