# Copyright (C) 2002, 2006, 2008 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

# In order to work around the very problems that force us to now generally
# create a libgcc.so, glibc reexported a number of routines from libgcc.a.
# By now choosing the same version tags for these specific routines, we
# maintain enough binary compatibility to allow future versions of glibc
# to defer implementation of these routines to libgcc.so via DT_AUXILIARY.

# Note that we cannot use the default libgcc-glibc.ver file on s390x,
# because GLIBC_2.0 does not exist on this architecture, as the first
# ever glibc release on the platform was GLIBC_2.2.

%ifndef __s390x__
%exclude {
  __divdi3
  __moddi3
  __udivdi3
  __umoddi3
  __register_frame
  __register_frame_table
  __deregister_frame
  __register_frame_info
  __deregister_frame_info
  __frame_state_for
  __register_frame_info_table
}

%inherit GCC_3.0 GLIBC_2.0
GLIBC_2.0 {
  __divdi3
  __moddi3
  __udivdi3
  __umoddi3

  __register_frame
  __register_frame_table
  __deregister_frame
  __register_frame_info
  __deregister_frame_info
  __frame_state_for
  __register_frame_info_table
}
%endif

%ifdef __s390x__
%exclude {
  __register_frame
  __register_frame_table
  __deregister_frame
  __register_frame_info
  __deregister_frame_info
  __frame_state_for
  __register_frame_info_table
}

%inherit GCC_3.0 GLIBC_2.2
GLIBC_2.2 {
  __register_frame
  __register_frame_table
  __deregister_frame
  __register_frame_info
  __deregister_frame_info
  __frame_state_for
  __register_frame_info_table
}
%endif

# With GCC 4.1.0 long double 128 bit support was introduced. The
# following symbols coming from libgcc are enabled when -mlong-double-128
# is specified. These lines make the symbols to get a @@GCC_4.1.0 attached.

%exclude {
  __divtc3
  __multc3
  __powitf2
  __fixtfti
  __fixunstfti
  __floattitf

  __fixtfdi
  __fixunstfdi
  __floatditf
}

GCC_4.1.0 {
  __divtc3
  __multc3
  __powitf2

%ifdef __s390x__
  __fixtfti
  __fixunstfti
  __floattitf

%else
  __fixtfdi
  __fixunstfdi
  __floatditf
%endif
}
