1## Linker script for GNU ld 2.11.94+ only.
2##
3## Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
4##
5## This file is part of the libstdc++ version 3 distribution.
6##
7## This file is part of the GNU ISO C++ Library.  This library is free
8## software; you can redistribute it and/or modify it under the
9## terms of the GNU General Public License as published by the
10## Free Software Foundation; either version 2, or (at your option)
11## any later version.
12##
13## This library is distributed in the hope that it will be useful,
14## but WITHOUT ANY WARRANTY; without even the implied warranty of
15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16## GNU General Public License for more details.
17##
18## You should have received a copy of the GNU General Public License along
19## with this library; see the file COPYING.  If not, write to the Free
20## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
21## USA.
22
23GLIBCPP_3.2 {
24
25  global:
26
27    # Names inside the 'extern' block are demangled names.
28    # All but the last are terminated with a semicolon.
29    extern "C++"
30    {
31      std::[A-Za]*;
32      std::ba[a-r]*;
33      std::basic_[a-h]*;
34      std::basic_ifstream*;
35      std::basic_istringstream*;
36      std::basic_istream*;
37      std::basic_iostream*;
38      std::basic_[j-r]*;
39      std::basic_streambuf*;
40      std::basic_stringbuf*;
41      std::basic_stringstream*;
42      std::basic_[t-z]*;
43      std::ba[t-z]*;
44      std::b[b-z]*;
45      std::c[a-n]*;
46      std::co[a-c]*;
47      std::codecvt_byname*;
48      std::codecvt::[A-Za-b]*;
49      std::codecvt::[A-Zd-z]*;
50      std::codecvt_c;
51      std::codecvt_w;
52      std::co[e-z]*;
53      std::c[p-z]*;
54      std::c_[a-z]*;
55      std::[A-Zd-k]*;
56      std::length_error*;
57      std::logic_error*;
58      std::locale::[A-Za-e]*;
59      std::locale::facet::[A-Za-z]*;
60      std::locale::facet::_M*;
61      std::locale::facet::_S_c_locale;
62      std::locale::facet::_S_clone_c_locale*;
63      std::locale::facet::_S_create_c_locale*;
64      std::locale::facet::_S_destroy_c_locale*;
65      std::locale::[A-Zg-z]*;
66      std::locale::_[A-Ra-z]*;
67      std::locale::_S_classic;
68      std::locale::_S_global;
69      std::locale::_S_num_categories;
70      std::locale::_S_normalize_category*;
71      std::locale::_[T-Za-z]*;
72      std::[A-Zm]*;
73      std::n[a-t]*;
74      std::num_put_[cw];
75      std::numeric*;
76      std::numpunct*;
77      std::num_get*;
78      std::num_get_[cw];
79      std::n[v-z]*;
80      std::ostrstream*;
81      std::overflow_error*;
82      std::out_of_range*;
83      std::[A-Zp-z]*;
84      std::__throw_*;
85      std::__numeric_limits_base*;
86      std::__timepunct*;
87      std::_S_bit_count;
88      std::_S_first_one
89    };
90
91    # Names not in an 'extern' block are mangled names.
92    _ZSt7getline*;
93    _ZStrs*;
94    _ZNSo*;
95    _ZNKSt9basic_ios*;
96    _ZNSt9basic_iosI[cw]St11char_traitsI[cw]EE15_M_cache_facetsERKSt6locale;
97    _ZNSt9basic_iosI[cw]St11char_traitsI[cw]EE[A-Z]*;
98    _ZNSt9basic_iosI[cw]St11char_traitsI[cw]EE[0-9][A-Za-z]*;
99    _ZNSt9basic_iosI[cw]St11char_traitsI[cw]EE[0-9][0-9][A-Za-z]*;
100
101    _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC*;
102    _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED*;
103    _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC*;
104    _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED*;
105
106    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_put*;
107
108    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3put*;
109    _ZNSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE2idE;
110
111    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_convert_intI[lmxy]EES3_S3_RSt8ios_basecccT_;
112
113    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_convert_intI[lmxy]EES3_S3_RSt8ios_basewccT_;
114
115    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE16_M_convert_floatI[de]EES3_S3_RSt8ios_baseccT_;
116
117    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE16_M_convert_floatI[de]EES3_S3_RSt8ios_basewcT_;
118
119    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE12_M_widen_int*;
120
121    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE14_M_widen_float*;
122
123    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE9_M_insert*;
124
125    _ZSt9use_facetISt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEEERKT_RKSt6locale;
126
127    # __num_base
128    _ZNSt10__num_base13_S_format_intERKSt8ios_basePccc;
129    _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc[il];
130    _ZNSt10__num_base8_S_atomsE;
131
132    # std::string minus binary operator plus
133    _ZNKSs*;
134    _ZNKSb*;
135    _ZNSs[A-Za-z]*;
136    _ZNSs[0-9][A-Za-z]*;
137    _ZNSs[0-9][0-9][A-Za-z]*;
138    _ZNSs[0-9]_[A-Ra-z]*;
139    _ZNSs[0-9][0-9]_[A-Ra-z]*;
140    _ZNSs12_S_empty_repEv;
141    _ZNSs20_S_empty_rep_storageE;
142    _ZNSbIwSt11char_traitsIwESaIwEE20_S_empty_rep_storageE;
143    _ZNSs12_S_constructE*;
144    _ZNSs13_S_copy_charsE*;
145    _ZNSbIwSt11char_traitsIwESaIwEE[A-Ra-z]*;
146    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][A-Ra-z]*;
147    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9][A-Ra-z]*;
148    _ZNSbIwSt11char_traitsIwESaIwEE[0-9]_[A-Ra-z]*;
149    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_[A-Ra-z]*;
150    _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
151    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]wRKS1_;
152    _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
153    _ZSt24__uninitialized_copy_auxIN9*;
154    _ZSt26__uninitialized_fill_n_aux*;
155    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_;
156    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_;
157    _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_;
158    _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_;
159
160    # std::__basic_file minus showmanyc_helper
161    _ZNSt12__basic_fileIcED*;
162    _ZNSt12__basic_fileIcEC*;
163    _ZNSt12__basic_fileIcE8sys_open*;
164    _ZNSt12__basic_fileIcE8sys_getc*;
165    _ZNSt12__basic_fileIcE10sys_ungetc*;
166    _ZNSt12__basic_fileIcE7seekpos*;
167    _ZNSt12__basic_fileIcE7seekoff*;
168    _ZNSt12__basic_fileIcE6xsputn*;
169    _ZNSt12__basic_fileIcE6xsgetn*;
170    _ZNSt12__basic_fileIcE5close*;
171    _ZNSt12__basic_fileIcE4sync*;
172    _ZNSt12__basic_fileIcE4open*;
173    _ZNSt12__basic_fileIcE2fd*;
174    _ZNSt12__basic_fileIcE12_M_open_modeE*;
175    _ZNKSt12__basic_fileIcE7is_open*;
176
177    # std::locale destructors
178    _ZNSt6localeD*;
179
180    # std::locale::facet destructors
181    _ZNSt6locale5facetD*;
182
183    # std::codecvt<char> members.
184    _ZNKSt7codecvtIcc11__mbstate_tE*;
185    # std::codecvt<char>::~codecvt
186    _ZNSt7codecvtIcc11__mbstate_tED*;
187    # std::codecvt<char>::codecvt(size_t), where size_t variable.
188    _ZNSt7codecvtIcc11__mbstate_tEC[12]E[jm];
189    # std::codecvt<char>::id
190    _ZNSt7codecvtIcc11__mbstate_tE2idE;
191
192    # std::codecvt<wchar_t> members.
193    _ZNKSt7codecvtIwc11__mbstate_tE*;
194    # std::codecvt<wchar_t>::~codecvt
195    _ZNSt7codecvtIwc11__mbstate_tED*;
196    # std::codecvt<wchar_t>::codecvt(size_t), where size_t variable.
197    _ZNSt7codecvtIwc11__mbstate_tEC[12]E[jm];
198    # std::codecvt<wchar_t>::id
199    _ZNSt7codecvtIwc11__mbstate_tE2idE;
200
201     # std::use_facet<codecvt>
202    _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale;
203    _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale;
204
205    # std::has_facet*
206    _ZSt9has_facet*;
207
208    # std::__default_alloc_template
209    _ZNSt24__default_alloc_templateILb1ELi0EE10deallocate*;
210    _ZNSt24__default_alloc_templateILb1ELi0EE8allocate*;
211    _ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE;
212    _ZNSt24__default_alloc_templateILb1ELi0EE22_S_node_allocator_lockE;
213    _ZNSt24__default_alloc_templateILb1ELi0EE9_S_refillE*;
214
215    # std::__default_alloc_template to be removed in the future
216    _ZNSt24__default_alloc_templateILb1ELi0EE10reallocateEPv*;
217    _ZNSt24__default_alloc_templateILb1ELi0EE11_S_round_upE*;
218    _ZNSt24__default_alloc_templateILb1ELi0EE14_S_chunk_allocE*;
219    _ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexE*;
220    _ZNSt24__default_alloc_templateILb1ELi0EE11_S_end_freeE;
221    _ZNSt24__default_alloc_templateILb1ELi0EE12_S_heap_sizeE;
222    _ZNSt24__default_alloc_templateILb1ELi0EE13_S_start_freeE;
223    _ZNSt24__default_alloc_templateILb1ELi0EE5_Lock*;
224
225    # operator new(unsigned)
226    _Znwj;
227    # operator new(unsigned, std::nothrow_t const&)
228    _ZnwjRKSt9nothrow_t;
229    # operator new(unsigned long)
230    _Znwm;
231    # operator new(unsigned long, std::nothrow_t const&)
232    _ZnwmRKSt9nothrow_t;
233
234    # operator delete(void*)
235    _ZdlPv;
236    # operator delete(void*, std::nothrow_t const&)
237    _ZdlPvRKSt9nothrow_t;
238
239    # operator new[](unsigned)
240    _Znaj;
241    # operator new[](unsigned, std::nothrow_t const&)
242    _ZnajRKSt9nothrow_t;
243    # operator new[](unsigned long)
244    _Znam;
245    # operator new[](unsigned long, std::nothrow_t const&)
246    _ZnamRKSt9nothrow_t;
247
248    # operator delete[](void*)
249    _ZdaPv;
250    # operator delete[](void*, std::nothrow_t const&)
251    _ZdaPvRKSt9nothrow_t;
252
253    # vtable
254    _ZTVS[a-z];
255    _ZTVSt[0-9][A-Za-z]*;
256    _ZTVSt[0-9][0-9][A-Za-z]*;
257    _ZTTS[a-z];
258    _ZTTSt[0-9][A-Za-z]*;
259    _ZTTSt[0-9][0-9][A-Za-z]*;
260    _ZTVN9__gnu_cxx*;
261    _ZTVNSt6locale5facetE;
262    _ZTVSt11__timepunctI[cw]E;
263    _ZTVNSt8ios_base7failureE;
264    _ZTVSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
265    _ZTVSt21__ctype_abstract_baseI[cw]E;
266
267    # XXX
268    _ZTVN10__cxxabi*;
269
270    # typeinfo
271    _ZTI[a-z];
272    _ZTIP[a-z];
273    _ZTIPK[a-z];
274    _ZTIS[a-z];
275    _ZTISt[0-9][A-Za-z]*;
276    _ZTISt[0-9][0-9][A-Za-z]*;
277    _ZTS[a-z];
278    _ZTSS[a-z];
279    _ZTSP[a-z];
280    _ZTSPK[a-z];
281    _ZTSSt[0-9][A-Za-z]*;
282    _ZTSSt[0-9][0-9][A-Za-z]*;
283    _ZTSN9__gnu_cxx*;
284    _ZTIN9__gnu_cxx*;
285    _ZTINSt8ios_base7failureE;
286    _ZTSNSt8ios_base7failureE;
287    _ZTINSt6locale5facetE;
288    _ZTSNSt6locale5facetE;
289    _ZTISt11__timepunctI[cw]E;
290    _ZTSSt11__timepunctI[cw]E;
291    _ZTSSt10__num_base;
292    _ZTISt10__num_base;
293    _ZTSSt21__ctype_abstract_baseI[cw]E;
294    _ZTISt21__ctype_abstract_baseI[cw]E;
295    _ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
296    _ZTSSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
297
298    # XXX
299    _ZTIN10__cxxabi*;
300    _ZTSN10__cxxabi*;
301
302    # function-scope static objects requires a guard variable.
303    _ZGV*;
304
305    # virtual function thunks
306    _ZTh*;
307    _ZTv*;
308    _ZTc*;
309
310    # std::__convert_to_v
311    _ZSt14__convert_to_v*;
312
313  local:
314    *;
315};
316
317# Symbols added after GLIBCPP_3.2
318GLIBCPP_3.2.1 {
319
320  _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj;
321  _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj;
322  _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj;
323  _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj;
324
325  _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_;
326  _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_;
327
328  # stub functions from libmath
329  sinf;
330  sinl;
331  sinhf;
332  sinhl;
333  cosf;
334  cosl;
335  coshf;
336  coshl;
337  tanf;
338  tanl;
339  tanhf;
340  tanhl;
341  atan2f;
342  atan2l;
343  expf;
344  expl;
345  hypotf;
346  hypotl;
347  hypot;
348  logf;
349  logl;
350  log10f;
351  log10l;
352  powf;
353  powl;
354  sqrtf;
355  sqrtl;
356  copysignf;
357  nan;
358  __signbit;
359  __signbitf;
360  __signbitl;
361
362} GLIBCPP_3.2;
363
364GLIBCPP_3.2.2 {
365
366  _ZNSt24__default_alloc_templateILb1ELi0EE12_S_force_newE;
367
368} GLIBCPP_3.2.1;
369
370GLIBCPP_3.2.3 {
371
372  global:
373
374    extern "C++"
375    {
376      # Needed only when generic cpu's atomicity.h is in use.
377      __gnu_cxx::_Atomic_add_mutex;
378      __gnu_cxx::_Atomic_add_mutex_once;
379      __gnu_cxx::__gthread_atomic_add_mutex_once;
380
381      std::__num_base::_S_atoms_in;
382      std::__num_base::_S_atoms_out
383    };
384
385    _ZNKSt7num_putI[wc]St19ostreambuf_iteratorI[wc]St11char_traitsI[wc]EEE6_M_pad*;
386
387    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE14_M_convert_intI[yxml]EES3_S3_RSt8ios_base[cw]T_;
388
389    _ZNKSt7num_putI[wc]St19ostreambuf_iteratorI[wc]St11char_traitsI[wc]EEE14_M_group_float*;
390
391  _ZNKSt7num_putI[wc]St19ostreambuf_iteratorI[wc]St11char_traitsI[wc]EEE12_M_group_int*;
392
393    # __basic_file::showmanyc_helper
394    _ZNSt12__basic_fileIcE16showmanyc_helperEv;
395
396} GLIBCPP_3.2.2;
397
398GLIBCPP_3.2.4 {
399
400  _ZNSt9basic_iosI[cw]St11char_traitsI[cw]EE11_M_setstateESt12_Ios_Iostate;
401
402} GLIBCPP_3.2.3;
403
404# Symbols in the support library (libsupc++) have their own tag.
405CXXABI_1.2 {
406
407  global:
408    __cxa_allocate_exception;
409    __cxa_bad_cast;
410    __cxa_bad_typeid;
411    __cxa_begin_catch;
412    __cxa_call_unexpected;
413    __cxa_current_exception_type;
414    __cxa_demangle;
415    __cxa_end_catch;
416    __cxa_free_exception;
417    __cxa_get_globals;
418    __cxa_get_globals_fast;
419    __cxa_pure_virtual;
420    __cxa_rethrow;
421    __cxa_throw;
422    __cxa_vec_cctor;
423    __cxa_vec_cleanup;
424    __cxa_vec_ctor;
425    __cxa_vec_delete2;
426    __cxa_vec_delete3;
427    __cxa_vec_delete;
428    __cxa_vec_dtor;
429    __cxa_vec_new2;
430    __cxa_vec_new3;
431    __cxa_vec_new;
432    __gxx_personality_v0;
433    __gxx_personality_sj0;
434    __dynamic_cast;
435
436    # __gnu_cxx::_verbose_terminate_handler()
437    _ZN9__gnu_cxx27__verbose_terminate_handlerEv;
438
439    # XXX Should not be exported.
440    __cxa_dyn_string_append_char;
441    __cxa_dyn_string_append_cstr;
442    __cxa_dyn_string_append;
443    __cxa_dyn_string_clear;
444    __cxa_dyn_string_copy_cstr;
445    __cxa_dyn_string_copy;
446    __cxa_dyn_string_delete;
447    __cxa_dyn_string_eq;
448    __cxa_dyn_string_init;
449    __cxa_dyn_string_insert_char;
450    __cxa_dyn_string_insert_cstr;
451    __cxa_dyn_string_insert;
452    __cxa_dyn_string_new;
453    __cxa_dyn_string_prepend_cstr;
454    __cxa_dyn_string_prepend;
455    __cxa_dyn_string_release;
456    __cxa_dyn_string_resize;
457    __cxa_dyn_string_substring;
458
459  local:
460    *;
461};
462
463# Symbols added after CXXABI_1.2
464CXXABI_1.2.1 {
465
466    __cxa_guard_acquire;
467    __cxa_guard_release;
468    __cxa_guard_abort;
469
470} CXXABI_1.2;
471
472CXXABI_1.2.2 {
473
474    # *_type_info classes, ctor and dtor
475    _ZN10__cxxabiv117__array_type_info*;
476    _ZN10__cxxabiv117__class_type_info*;
477    _ZN10__cxxabiv116__enum_type_info*;
478    _ZN10__cxxabiv120__function_type_info*;
479    _ZN10__cxxabiv123__fundamental_type_info*;
480    _ZN10__cxxabiv117__pbase_type_info*;
481    _ZN10__cxxabiv129__pointer_to_member_type_info*;
482    _ZN10__cxxabiv119__pointer_type_info*;
483    _ZN10__cxxabiv120__si_class_type_info*;
484    _ZN10__cxxabiv121__vmi_class_type_info*;
485
486    # *_type_info classes, member functions
487    _ZNK10__cxxabiv117__class_type_info*;
488    _ZNK10__cxxabiv120__function_type_info*;
489    _ZNK10__cxxabiv117__pbase_type_info*;
490    _ZNK10__cxxabiv129__pointer_to_member_type_info*;
491    _ZNK10__cxxabiv119__pointer_type_info*;
492    _ZNK10__cxxabiv120__si_class_type_info*;
493    _ZNK10__cxxabiv121__vmi_class_type_info*;
494
495} CXXABI_1.2.1;
496