1# Copyright (C) 2008-2018 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
41GLIBC_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.
103GCC_3.0 {
104  __gttf2
105  __lttf2
106  __netf2
107}
108
109GCC_4.0.0 {
110  __divtc3
111  __multc3
112  __powitf2
113}
114
115GCC_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
151GCC_4.8.0 {
152  __cpu_model
153  __cpu_indicator_init
154}
155%else
156GCC_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}
188GCC_4.5.0 {
189  __extendxftf2
190}
191
192GCC_4.8.0 {
193  __cpu_model
194  __cpu_indicator_init
195}
196%endif
197