From 5aaa21080b72d6e54774437d5f0082eb29f199af Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Thu, 9 Oct 2003 21:17:11 +0000 Subject: [PATCH] linker-map.gnu: Make more *_type_info bits visible. 2003-10-09 Benjamin Kosnik * config/linker-map.gnu: Make more *_type_info bits visible. Move new/delete bits back into GLIBCXX space. * include/bits/locale_classes.h: Move _M_id out of line, so that locale::id::_S_highwater can be removed from the export list. * src/locale.cc (locale::id::_M_id): Define. From-SVN: r72287 --- libstdc++-v3/ChangeLog | 9 ++ libstdc++-v3/config/linker-map.gnu | 101 ++++++++++++++------- libstdc++-v3/include/bits/locale_classes.h | 9 +- libstdc++-v3/src/locale.cc | 8 ++ 4 files changed, 88 insertions(+), 39 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 25018c507b6..08950d9f9f7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2003-10-09 Benjamin Kosnik + + * config/linker-map.gnu: Make more *_type_info bits visible. + Move new/delete bits back into GLIBCXX space. + + * include/bits/locale_classes.h: Move _M_id out of line, so that + locale::id::_S_highwater can be removed from the export list. + * src/locale.cc (locale::id::_M_id): Define. + 2003-10-09 Andreas Tobler * testsuite/lib/libstdc++.exp: Set LD_LIBRARY_PATH_64 for diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu index d0ab03c191d..adbd390e59f 100644 --- a/libstdc++-v3/config/linker-map.gnu +++ b/libstdc++-v3/config/linker-map.gnu @@ -38,7 +38,7 @@ GLIBCXX_3.4 { std::locale::facet::_S_destroy_c_locale*; std::locale::[A-Zg-h]*; std::locale::id::[A-Za-z]*; - std::locale::id::_S_highwater; + std::locale::id::_M_id*; std::locale::[A-Zj-z]*; std::locale::_[A-Ha-z]*; std::locale::_Impl::[A-Za-z]*; @@ -62,6 +62,26 @@ GLIBCXX_3.4 { # Names not in an 'extern' block are mangled names. + # operator new(size_t) + _Znw[jm]; + # operator new(size_t, std::nothrow_t const&) + _Znw[jm]RKSt9nothrow_t; + + # operator delete(void*) + _ZdlPv; + # operator delete(void*, std::nothrow_t const&) + _ZdlPvRKSt9nothrow_t; + + # operator new[](size_t) + _Zna[jm]; + # operator new[](size_t, std::nothrow_t const&) + _Zna[jm]RKSt9nothrow_t; + + # operator delete[](void*) + _ZdaPv; + # operator delete[](void*, std::nothrow_t const&) + _ZdaPvRKSt9nothrow_t; + # std::locale destructors _ZNSt6localeD*; @@ -84,6 +104,12 @@ GLIBCXX_3.4 { _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_; _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_; + # std::__ctype_abstract_base* + _ZNSt21__ctype_abstract_base*; + + # std::__codecvt_abstract_base* + _ZNStSt23__codecvt_abstract_base*; + # virtual table _ZTVNSt8ios_base7failureE; _ZTVNSt6locale5facetE; @@ -221,57 +247,68 @@ CXXABI_1.3 { __gxx_personality_sj0; __dynamic_cast; - # operator new(size_t) - _Znw[jm]; - # operator new(size_t, std::nothrow_t const&) - _Znw[jm]RKSt9nothrow_t; - - # operator delete(void*) - _ZdlPv; - # operator delete(void*, std::nothrow_t const&) - _ZdlPvRKSt9nothrow_t; - - # operator new[](size_t) - _Zna[jm]; - # operator new[](size_t, std::nothrow_t const&) - _Zna[jm]RKSt9nothrow_t; - - # operator delete[](void*) - _ZdaPv; - # operator delete[](void*, std::nothrow_t const&) - _ZdaPvRKSt9nothrow_t; + # *_type_info classes, ctor and dtor + _ZN10__cxxabiv117__array_type_info*; + _ZN10__cxxabiv117__class_type_info*; + _ZN10__cxxabiv116__enum_type_info*; + _ZN10__cxxabiv120__function_type_info*; + _ZN10__cxxabiv123__fundamental_type_info*; + _ZN10__cxxabiv117__pbase_type_info*; + _ZN10__cxxabiv129__pointer_to_member_type_info*; + _ZN10__cxxabiv119__pointer_type_info*; + _ZN10__cxxabiv120__si_class_type_info*; + _ZN10__cxxabiv121__vmi_class_type_info*; + + # *_type_info classes, member functions + _ZNK10__cxxabiv117__class_type_info*; + _ZNK10__cxxabiv120__function_type_info*; + _ZNK10__cxxabiv117__pbase_type_info*; + _ZNK10__cxxabiv129__pointer_to_member_type_info*; + _ZNK10__cxxabiv119__pointer_type_info*; + _ZNK10__cxxabiv120__si_class_type_info*; + _ZNK10__cxxabiv121__vmi_class_type_info*; # virtual table - _ZTVN10__cxxabiv117__class_type_infoE; - _ZTVN10__cxxabiv120__si_class_type_infoE; - _ZTVN10__cxxabiv121__vmi_class_type_infoE; - _ZTVN10__cxxabiv123__fundamental_type_infoE; _ZTVN10__cxxabiv117__array_type_infoE; - _ZTVN10__cxxabiv120__function_type_infoE; + _ZTVN10__cxxabiv117__class_type_infoE; _ZTVN10__cxxabiv116__enum_type_infoE; + _ZTVN10__cxxabiv120__function_type_infoE; + _ZTVN10__cxxabiv123__fundamental_type_infoE; _ZTVN10__cxxabiv117__pbase_type_infoE; - _ZTVN10__cxxabiv119__pointer_type_infoE; _ZTVN10__cxxabiv129__pointer_to_member_type_infoE; + _ZTVN10__cxxabiv119__pointer_type_infoE; + _ZTVN10__cxxabiv120__si_class_type_infoE; + _ZTVN10__cxxabiv121__vmi_class_type_infoE; # typeinfo structure (and some names) _ZTI[a-z]; _ZTIP[a-z]; _ZTIPK[a-z]; - _ZTIN10__cxxabiv117__class_type_infoE; - _ZTIN10__cxxabiv120__si_class_type_infoE; - _ZTIN10__cxxabiv121__vmi_class_type_infoE; - _ZTIN10__cxxabiv123__fundamental_type_infoE; _ZTIN10__cxxabiv117__array_type_infoE; - _ZTIN10__cxxabiv120__function_type_infoE; + _ZTIN10__cxxabiv117__class_type_infoE; _ZTIN10__cxxabiv116__enum_type_infoE; + _ZTIN10__cxxabiv120__function_type_infoE; + _ZTIN10__cxxabiv123__fundamental_type_infoE; _ZTIN10__cxxabiv117__pbase_type_infoE; - _ZTIN10__cxxabiv119__pointer_type_infoE; _ZTIN10__cxxabiv129__pointer_to_member_type_infoE; + _ZTIN10__cxxabiv119__pointer_type_infoE; + _ZTIN10__cxxabiv120__si_class_type_infoE; + _ZTIN10__cxxabiv121__vmi_class_type_infoE; # typeinfo name _ZTS[a-z]; _ZTSP[a-z]; _ZTSPK[a-z]; + _ZTSN10__cxxabiv117__array_type_infoE; + _ZTSN10__cxxabiv117__class_type_infoE; + _ZTSN10__cxxabiv116__enum_type_infoE; + _ZTSN10__cxxabiv120__function_type_infoE; + _ZTSN10__cxxabiv123__fundamental_type_infoE; + _ZTSN10__cxxabiv117__pbase_type_infoE; + _ZTSN10__cxxabiv129__pointer_to_member_type_infoE; + _ZTSN10__cxxabiv119__pointer_type_infoE; + _ZTSN10__cxxabiv120__si_class_type_infoE; + _ZTSN10__cxxabiv121__vmi_class_type_infoE; # __gnu_cxx::_verbose_terminate_handler() _ZN9__gnu_cxx27__verbose_terminate_handlerEv; diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index e8f4e816fc2..62dabff85a7 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -289,13 +289,8 @@ namespace std // counted on to be zero-initialized. id() { } - inline size_t - _M_id() const - { - if (!_M_index) - _M_index = 1 + __exchange_and_add(&_S_highwater, 1); - return _M_index - 1; - } + size_t + _M_id() const; }; diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 7c1e8ab5b81..f5b36044e58 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -68,6 +68,14 @@ namespace std __gthread_once_t locale::_S_once = __GTHREAD_ONCE_INIT; #endif + size_t + locale::id::_M_id() const + { + if (!_M_index) + _M_index = 1 + __exchange_and_add(&_S_highwater, 1); + return _M_index - 1; + } + // Definitions for static const data members of locale::id _Atomic_word locale::id::_S_highwater; // init'd to 0 by linker -- 2.30.2