1## Linker script for GNU namespace versioning.
2##
3## Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009, 2011, 2012
4## Free Software Foundation, Inc.
5##
6## This file is part of the libstdc++ version 3 distribution.
7##
8## This file is part of the GNU ISO C++ Library.  This library is free
9## software; you can redistribute it and/or modify it under the
10## terms of the GNU General Public License as published by the
11## Free Software Foundation; either version 3, or (at your option)
12## any later version.
13##
14## This library is distributed in the hope that it will be useful,
15## but WITHOUT ANY WARRANTY; without even the implied warranty of
16## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17## GNU General Public License for more details.
18##
19## You should have received a copy of the GNU General Public License along
20## with this library; see the file COPYING3.  If not see
21## <http://www.gnu.org/licenses/>.
22
23GLIBCXX_7.0 {
24
25  global:
26
27    # Names inside the 'extern' block are demangled names.
28    extern "C++"
29    {
30      std::__7::*;
31      std::*
32    };
33
34    # locale
35    _ZNSt3__79has_facetINS_*;
36
37    # hash
38    _ZNSt8__detail3__712__prime_listE;
39    _ZNSt3tr18__detail3__712__prime_listE;
40
41    # thread/mutex/condition_variable/future
42    __once_proxy;
43
44    # operator new(size_t)
45    _Znw[jmy];
46    # operator new(size_t, std::nothrow_t const&)
47    _Znw[jmy]RKSt9nothrow_t;
48
49    # operator delete(void*)
50    _ZdlPv;
51    # operator delete(void*, std::nothrow_t const&)
52    _ZdlPvRKSt9nothrow_t;
53
54    # operator new[](size_t)
55    _Zna[jmy];
56    # operator new[](size_t, std::nothrow_t const&)
57    _Zna[jmy]RKSt9nothrow_t;
58
59    # operator delete[](void*)
60    _ZdaPv;
61    # operator delete[](void*, std::nothrow_t const&)
62    _ZdaPvRKSt9nothrow_t;
63
64    # function-scope static objects requires a guard variable.
65    _ZGVNSt*;
66
67    _ZTT*;
68    _ZTV*;
69
70    _ZTI*;
71    _ZTS*;
72
73    _ZTv0_n*;
74
75    # std::__detail::_List_node_base
76    _ZNSt8__detail3__715_List_node_base7_M_hook*;
77    _ZNSt8__detail3__715_List_node_base9_M_unhookEv;
78    _ZNSt8__detail3__715_List_node_base10_M_reverseEv;
79    _ZNSt8__detail3__715_List_node_base11_M_transfer*;
80    _ZNSt8__detail3__715_List_node_base4swapER*;
81
82    # std::__convert_to_v
83    _ZNSt3__714__convert_to_v*;
84
85    # std::__copy_streambufs
86    _ZNSt3__717__copy_streambufsI*;
87    _ZNSt3__721__copy_streambufs_eofI*;
88
89    # __gnu_cxx::__atomic_add
90    # __gnu_cxx::__exchange_and_add
91    _ZN9__gnu_cxx3__712__atomic_addEPV[il][il];
92    _ZN9__gnu_cxx3__718__exchange_and_addEPV[li][il];
93
94    # __gnu_cxx::__pool
95    _ZN9__gnu_cxx3__76__poolILb[01]EE13_M_initializeEv;
96    _ZN9__gnu_cxx3__76__poolILb[01]EE16_M_reserve_blockE[jmy][jmy];
97    _ZN9__gnu_cxx3__76__poolILb[01]EE16_M_reclaim_blockEPc[jmy];
98    _ZN9__gnu_cxx3__76__poolILb[01]EE10_M_destroyEv;
99    _ZN9__gnu_cxx3__76__poolILb1EE16_M_get_thread_idEv;
100
101    _ZN9__gnu_cxx3__717__pool_alloc_base9_M_refillE[jmy];
102    _ZN9__gnu_cxx3__717__pool_alloc_base16_M_get_free_listE[jmy];
103    _ZN9__gnu_cxx3__717__pool_alloc_base12_M_get_mutexEv;
104
105    _ZN9__gnu_cxx3__79free_list6_M_getE[jmy];
106    _ZN9__gnu_cxx3__79free_list8_M_clearEv;
107
108    # __gnu_cxx::stdio_sync_filebuf
109    _ZTVN9__gnu_cxx3__718stdio_sync_filebufI[cw]St3__711char_traitsI[cw]EEE;
110    _ZN9__gnu_cxx3__718stdio_sync_filebufI[cw]NSt3__711char_traitsI[cw]EEE[5-9]*;
111
112    # debug mode
113    _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv;
114    _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
115    _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
116    _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
117    _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
118
119    _ZN11__gnu_debug19_Safe_iterator_base9_M_attach*;
120    _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_single*;
121    _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
122    _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv;
123    _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv;
124    _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
125    _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
126
127    _ZNK11__gnu_debug16_Error_formatter10_M_message*;
128    _ZNK11__gnu_debug16_Error_formatter10_Parameter*;
129    _ZNK11__gnu_debug16_Error_formatter13_M_print_word*;
130    _ZNK11__gnu_debug16_Error_formatter15_M_print_string*;
131    _ZNK11__gnu_debug16_Error_formatter8_M_error*;
132    _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv;
133
134    # __gnu_debug::_Safe_unordered_container_base
135    # __gnu_debug::_Safe_local_iterator_base
136    _ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_;
137    _ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv;
138    _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
139    _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv;
140
141
142    # parallel mode
143    _ZN14__gnu_parallel9_Settings3getEv;
144    _ZN14__gnu_parallel9_Settings3setERS0_;
145
146  local:
147    *;
148};
149
150
151# Symbols in the support library (libsupc++) have their own tag.
152CXXABI_2.0 {
153
154  global:
155    __cxa_allocate_exception;
156    __cxa_allocate_dependent_exception;
157    __cxa_bad_cast;
158    __cxa_bad_typeid;
159    __cxa_begin_catch;
160    __cxa_begin_cleanup;
161    __cxa_call_unexpected;
162    __cxa_current_exception_type;
163    __cxa_deleted_virtual;
164    __cxa_demangle;
165    __cxa_end_catch;
166    __cxa_end_cleanup;
167    __cxa_free_exception;
168    __cxa_free_dependent_exception;
169    __cxa_get_exception_ptr;
170    __cxa_get_globals;
171    __cxa_get_globals_fast;
172    __cxa_guard_abort;
173    __cxa_guard_acquire;
174    __cxa_guard_release;
175    __cxa_pure_virtual;
176    __cxa_rethrow;
177    __cxa_throw;
178    __cxa_type_match;
179    __cxa_vec_cctor;
180    __cxa_vec_cleanup;
181    __cxa_vec_ctor;
182    __cxa_vec_delete2;
183    __cxa_vec_delete3;
184    __cxa_vec_delete;
185    __cxa_vec_dtor;
186    __cxa_vec_new2;
187    __cxa_vec_new3;
188    __cxa_vec_new;
189    __gxx_personality_v0;
190    __gxx_personality_sj0;
191    __dynamic_cast;
192
193    # std::exception_ptr
194    _ZNSt15__exception_ptr13exception_ptrC1Ev;
195    _ZNSt15__exception_ptr13exception_ptrC2Ev;
196    _ZNSt15__exception_ptr13exception_ptrC1ERKS0_;
197    _ZNSt15__exception_ptr13exception_ptrC2ERKS0_;
198    _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE;
199    _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE;
200    _ZNSt15__exception_ptr13exception_ptrD1Ev;
201    _ZNSt15__exception_ptr13exception_ptrD2Ev;
202    _ZNSt15__exception_ptr13exception_ptraSERKS0_;
203    _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv;
204    _ZNKSt15__exception_ptr13exception_ptrntEv;
205    _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv;
206    _ZNSt15__exception_ptr13exception_ptr4swapERS0_;
207    _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_;
208    _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_;
209
210    _ZSt17current_exceptionv;
211    _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
212
213    # std::nested_exception
214    _ZNSt16nested_exceptionD*;
215    _ZTISt16nested_exception;
216    _ZTVSt16nested_exception;
217
218    # std::bad_function_call.
219    _ZNSt17bad_function_callD*;
220    _ZTISt17bad_function_call;
221    _ZTSSt17bad_function_call;
222    _ZTVSt17bad_function_call;
223
224    # Default function.
225    _ZSt11_Hash_bytesPKv*;
226
227    # FNV hash.
228    _ZSt15_Fnv_hash_bytesPKv*;
229
230    # __gnu_cxx::_verbose_terminate_handler()
231    _ZN9__gnu_cxx3__727__verbose_terminate_handlerEv;
232
233    # *_type_info classes, ctor and dtor
234    _ZN10__cxxabiv117__array_type_info*;
235    _ZN10__cxxabiv117__class_type_info*;
236    _ZN10__cxxabiv116__enum_type_info*;
237    _ZN10__cxxabiv120__function_type_info*;
238    _ZN10__cxxabiv123__fundamental_type_info*;
239    _ZN10__cxxabiv117__pbase_type_info*;
240    _ZN10__cxxabiv129__pointer_to_member_type_info*;
241    _ZN10__cxxabiv119__pointer_type_info*;
242    _ZN10__cxxabiv120__si_class_type_info*;
243    _ZN10__cxxabiv121__vmi_class_type_info*;
244
245    # *_type_info classes, member functions
246    _ZNK10__cxxabiv117__class_type_info*;
247    _ZNK10__cxxabiv120__function_type_info*;
248    _ZNK10__cxxabiv117__pbase_type_info*;
249    _ZNK10__cxxabiv129__pointer_to_member_type_info*;
250    _ZNK10__cxxabiv119__pointer_type_info*;
251    _ZNK10__cxxabiv120__si_class_type_info*;
252    _ZNK10__cxxabiv121__vmi_class_type_info*;
253
254    # typeinfo structure
255    _ZTI[a-z];
256    _ZTIP[a-z];
257    _ZTIPK[a-z];
258    _ZTIN10__cxxabiv117__array_type_infoE;
259    _ZTIN10__cxxabiv117__class_type_infoE;
260    _ZTIN10__cxxabiv116__enum_type_infoE;
261    _ZTIN10__cxxabiv120__function_type_infoE;
262    _ZTIN10__cxxabiv123__fundamental_type_infoE;
263    _ZTIN10__cxxabiv117__pbase_type_infoE;
264    _ZTIN10__cxxabiv129__pointer_to_member_type_infoE;
265    _ZTIN10__cxxabiv119__pointer_type_infoE;
266    _ZTIN10__cxxabiv120__si_class_type_infoE;
267    _ZTIN10__cxxabiv121__vmi_class_type_infoE;
268    _ZTIN10__cxxabiv115__forced_unwindE;
269    _ZTIN10__cxxabiv119__foreign_exceptionE;
270    _ZTIN10__cxxabiv115__forced_unwindE;
271    _ZTIN10__cxxabiv119__foreign_exceptionE;
272
273    # typeinfo name
274    _ZTS[a-z];
275    _ZTSP[a-z];
276    _ZTSPK[a-z];
277    _ZTSN10__cxxabiv117__array_type_infoE;
278    _ZTSN10__cxxabiv117__class_type_infoE;
279    _ZTSN10__cxxabiv116__enum_type_infoE;
280    _ZTSN10__cxxabiv120__function_type_infoE;
281    _ZTSN10__cxxabiv123__fundamental_type_infoE;
282    _ZTSN10__cxxabiv117__pbase_type_infoE;
283    _ZTSN10__cxxabiv129__pointer_to_member_type_infoE;
284    _ZTSN10__cxxabiv119__pointer_type_infoE;
285    _ZTSN10__cxxabiv120__si_class_type_infoE;
286    _ZTSN10__cxxabiv121__vmi_class_type_infoE;
287
288    # typeinfo for char16_t and char32_t
289    _ZTIDs;
290    _ZTIPDs;
291    _ZTIPKDs;
292    _ZTIDi;
293    _ZTIPDi;
294    _ZTIPKDi;
295
296    # typeinfo for decimal floating point types
297    _ZTID[fde];
298    _ZTIPD[fde];
299    _ZTIPKD[fde];
300
301    # typeinfo for decltype(nullptr)
302    _ZTIDn;
303    _ZTIPDn;
304    _ZTIPKDn;
305
306    # typeinfo for __int128 and unsigned __int128
307    _ZTI[no];
308    _ZTIP[no];
309    _ZTIPK[no];
310
311    # virtual table
312    _ZTVN10__cxxabiv117__array_type_infoE;
313    _ZTVN10__cxxabiv117__class_type_infoE;
314    _ZTVN10__cxxabiv116__enum_type_infoE;
315    _ZTVN10__cxxabiv120__function_type_infoE;
316    _ZTVN10__cxxabiv123__fundamental_type_infoE;
317    _ZTVN10__cxxabiv117__pbase_type_infoE;
318    _ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
319    _ZTVN10__cxxabiv119__pointer_type_infoE;
320    _ZTVN10__cxxabiv120__si_class_type_infoE;
321    _ZTVN10__cxxabiv121__vmi_class_type_infoE;
322
323};
324
325# Symbols in the support library (libsupc++) supporting trans-mem.
326CXXABI_TM_1 {
327
328  global:
329    __cxa_tm_cleanup;
330
331};
332