Home | History | Annotate | Line # | Download | only in s390
      1 # Copyright (C) 2002-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 # Note that we cannot use the default libgcc-glibc.ver file on s390x,
     26 # because GLIBC_2.0 does not exist on this architecture, as the first
     27 # ever glibc release on the platform was GLIBC_2.2.
     28 
     29 %ifndef __s390x__
     30 %exclude {
     31   __divdi3
     32   __moddi3
     33   __udivdi3
     34   __umoddi3
     35   __register_frame
     36   __register_frame_table
     37   __deregister_frame
     38   __register_frame_info
     39   __deregister_frame_info
     40   __frame_state_for
     41   __register_frame_info_table
     42 }
     43 
     44 %inherit GCC_3.0 GLIBC_2.0
     45 GLIBC_2.0 {
     46   __divdi3
     47   __moddi3
     48   __udivdi3
     49   __umoddi3
     50 
     51   __register_frame
     52   __register_frame_table
     53   __deregister_frame
     54   __register_frame_info
     55   __deregister_frame_info
     56   __frame_state_for
     57   __register_frame_info_table
     58 }
     59 %endif
     60 
     61 %ifdef __s390x__
     62 %exclude {
     63   __register_frame
     64   __register_frame_table
     65   __deregister_frame
     66   __register_frame_info
     67   __deregister_frame_info
     68   __frame_state_for
     69   __register_frame_info_table
     70 }
     71 
     72 %inherit GCC_3.0 GLIBC_2.2
     73 GLIBC_2.2 {
     74   __register_frame
     75   __register_frame_table
     76   __deregister_frame
     77   __register_frame_info
     78   __deregister_frame_info
     79   __frame_state_for
     80   __register_frame_info_table
     81 }
     82 %endif
     83 
     84 # With GCC 4.1.0 long double 128 bit support was introduced. The
     85 # following symbols coming from libgcc are enabled when -mlong-double-128
     86 # is specified. These lines make the symbols to get a @@GCC_4.1.0 attached.
     87 
     88 %exclude {
     89   __divtc3
     90   __multc3
     91   __powitf2
     92   __fixtfti
     93   __fixunstfti
     94   __floattitf
     95 
     96   __fixtfdi
     97   __fixunstfdi
     98   __floatditf
     99 }
    100 
    101 GCC_4.1.0 {
    102   __divtc3
    103   __multc3
    104   __powitf2
    105 
    106 %ifdef __s390x__
    107   __fixtfti
    108   __fixunstfti
    109   __floattitf
    110 
    111 %else
    112   __fixtfdi
    113   __fixunstfdi
    114   __floatditf
    115 %endif
    116 }
    117