diff options
Diffstat (limited to 'contrib/libstdc++/config')
11 files changed, 206 insertions, 60 deletions
diff --git a/contrib/libstdc++/config/linker-map.gnu b/contrib/libstdc++/config/linker-map.gnu index d4346b1..f82002a 100644 --- a/contrib/libstdc++/config/linker-map.gnu +++ b/contrib/libstdc++/config/linker-map.gnu @@ -20,7 +20,6 @@ ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. - GLIBCPP_3.2 { global: @@ -29,21 +28,120 @@ GLIBCPP_3.2 { # All but the last are terminated with a semicolon. extern "C++" { - std::[A-Za-z]*; + std::[A-Za]*; + std::ba[a-r]*; + std::basic_[a-r]*; + std::basic_streambuf*; + std::basic_stringbuf*; + std::basic_stringstream*; + std::basic_[t-z]*; + std::ba[t-z]*; + std::b[b-z]*; + std::c[a-n]*; + std::co[a-c]*; + std::codecvt_byname*; + std::codecvt::[A-Za-b]*; + std::codecvt::[A-Zd-z]*; + std::codecvt_c; + std::codecvt_w; + std::co[e-z]*; + std::c[p-z]*; + std::c_[a-z]*; + std::[A-Zd-k]*; + std::length_error*; + std::logic_error*; + std::locale::[A-Za-z]*; + std::locale::_[A-Ra-z]*; + std::locale::_S_classic; + std::locale::_S_global; + std::locale::_S_num_categories; + std::locale::_S_normalize_category*; + std::locale::_[T-Za-z]*; + std::[A-Zm-z]*; std::__throw_*; std::__basic_file*; std::__num_base*; std::__timepunct*; std::__numeric_limits_base*; std::_S_bit_count; - std::_S_first_one; - std::__default_alloc_template*; - std::__malloc_alloc_template* + std::_S_first_one }; # Names not in an 'extern' block are mangled names. + + # std::string minus binary operator plus + _ZNKSs*; + _ZNKSb*; + _ZNSs[A-Za-z]*; + _ZNSs[0-9][A-Za-z]*; + _ZNSs[0-9][0-9][A-Za-z]*; + _ZNSs[0-9]_[A-Ra-z]*; + _ZNSs[0-9][0-9]_[A-Ra-z]*; + _ZNSs12_S_empty_repEv; + _ZNSs20_S_empty_rep_storageE; + _ZNSbIwSt11char_traitsIwESaIwEE20_S_empty_rep_storageE; + _ZNSs12_S_constructE*; + _ZNSs13_S_copy_charsE*; + _ZNSbIwSt11char_traitsIwESaIwEE[A-Ra-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE[0-9][A-Ra-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9][A-Ra-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE[0-9]_[A-Ra-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_[A-Ra-z]*; + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*; + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]wRKS1_; + _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv; + _ZSt24__uninitialized_copy_auxIN9*; + _ZSt26__uninitialized_fill_n_aux*; + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_; + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_; + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_; + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_; + + # std::locale destructors + _ZNSt6localeD*; + + # std::codecvt<char> members. + _ZNKSt7codecvtIcc11__mbstate_tE*; + # std::codecvt<char>::~codecvt + _ZNSt7codecvtIcc11__mbstate_tED*; + # std::codecvt<char>::codecvt(size_t), where size_t variable. + _ZNSt7codecvtIcc11__mbstate_tEC[12]E[jm]; + # std::codecvt<char>::id + _ZNSt7codecvtIcc11__mbstate_tE2idE; + + # std::codecvt<wchar_t> members. + _ZNKSt7codecvtIwc11__mbstate_tE*; + # std::codecvt<wchar_t>::~codecvt + _ZNSt7codecvtIwc11__mbstate_tED*; + # std::codecvt<wchar_t>::codecvt(size_t), where size_t variable. + _ZNSt7codecvtIwc11__mbstate_tEC[12]E[jm]; + # std::codecvt<wchar_t>::id + _ZNSt7codecvtIwc11__mbstate_tE2idE; + + # std::use_facet<codecvt> + _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale; + _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale; + + # std::has_facet* _ZSt9has_facet*; + # std::__default_alloc_template + _ZNSt24__default_alloc_templateILb1ELi0EE10deallocate*; + _ZNSt24__default_alloc_templateILb1ELi0EE8allocate*; + _ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE; + _ZNSt24__default_alloc_templateILb1ELi0EE22_S_node_allocator_lockE; + _ZNSt24__default_alloc_templateILb1ELi0EE9_S_refillE*; + + # std::__default_alloc_template to be removed in the future + _ZNSt24__default_alloc_templateILb1ELi0EE10reallocateEPv*; + _ZNSt24__default_alloc_templateILb1ELi0EE11_S_round_upE*; + _ZNSt24__default_alloc_templateILb1ELi0EE14_S_chunk_allocE*; + _ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexE*; + _ZNSt24__default_alloc_templateILb1ELi0EE11_S_end_freeE; + _ZNSt24__default_alloc_templateILb1ELi0EE12_S_heap_sizeE; + _ZNSt24__default_alloc_templateILb1ELi0EE13_S_start_freeE; + _ZNSt24__default_alloc_templateILb1ELi0EE5_Lock*; + # operator new(unsigned) _Znwj; # operator new(unsigned, std::nothrow_t const&) @@ -72,8 +170,8 @@ GLIBCPP_3.2 { # operator delete[](void*, std::nothrow_t const&) _ZdaPvRKSt9nothrow_t; - # vtable - _ZTV*; + # vtable + _ZTV*; _ZTT*; # typeinfo @@ -95,6 +193,54 @@ GLIBCPP_3.2 { *; }; +# Symbols added after GLIBCPP_3.2 +GLIBCPP_3.2.1 { + + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj; + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj; + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj; + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj; + + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_; + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_; + + _ZNSt24__default_alloc_templateILb1ELi0EE12_S_force_newE; + + # stub functions from libmath + sinf; + sinl; + sinhf; + sinhl; + cosf; + cosl; + coshf; + coshl; + tanf; + tanl; + tanhf; + tanhl; + atan2f; + atan2l; + expf; + expl; + hypotf; + hypotl; + hypot; + logf; + logl; + log10f; + log10l; + powf; + powl; + sqrtf; + sqrtl; + copysignf; + nan; + __signbit; + __signbitf; + __signbitl; + +} GLIBCPP_3.2; # Symbols in the support library (libsupc++) have their own tag. CXXABI_1.2 { diff --git a/contrib/libstdc++/config/locale/generic/c_locale.cc b/contrib/libstdc++/config/locale/generic/c_locale.cc index e274836..689bbf5 100644 --- a/contrib/libstdc++/config/locale/generic/c_locale.cc +++ b/contrib/libstdc++/config/locale/generic/c_locale.cc @@ -223,4 +223,15 @@ namespace std __c_locale locale::facet::_S_clone_c_locale(__c_locale&) { return __c_locale(); } + + const char* locale::_S_categories[_S_categories_size + + _S_extra_categories_size] = + { + "LC_CTYPE", + "LC_NUMERIC", + "LC_COLLATE", + "LC_TIME", + "LC_MONETARY", + "LC_MESSAGES" + }; } // namespace std diff --git a/contrib/libstdc++/config/locale/generic/c_locale.h b/contrib/libstdc++/config/locale/generic/c_locale.h index bfd9bf0..9627d86 100644 --- a/contrib/libstdc++/config/locale/generic/c_locale.h +++ b/contrib/libstdc++/config/locale/generic/c_locale.h @@ -35,6 +35,8 @@ #include <clocale> +#define _GLIBCPP_NUM_CATEGORIES 0 + namespace std { typedef int* __c_locale; diff --git a/contrib/libstdc++/config/locale/generic/time_members.cc b/contrib/libstdc++/config/locale/generic/time_members.cc index d02f0c3..fd45645 100644 --- a/contrib/libstdc++/config/locale/generic/time_members.cc +++ b/contrib/libstdc++/config/locale/generic/time_members.cc @@ -39,13 +39,6 @@ namespace std { template<> - __timepunct<char>::~__timepunct() - { - if (_M_c_locale_timepunct != _S_c_locale) - _S_destroy_c_locale(_M_c_locale_timepunct); - } - - template<> void __timepunct<char>:: _M_put(char* __s, size_t __maxlen, const char* __format, @@ -122,13 +115,6 @@ namespace std #ifdef _GLIBCPP_USE_WCHAR_T template<> - __timepunct<wchar_t>::~__timepunct() - { - if (_M_c_locale_timepunct != _S_c_locale) - _S_destroy_c_locale(_M_c_locale_timepunct); - } - - template<> void __timepunct<wchar_t>:: _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, diff --git a/contrib/libstdc++/config/locale/gnu/c_locale.cc b/contrib/libstdc++/config/locale/gnu/c_locale.cc index 3982a65..188f3a2 100644 --- a/contrib/libstdc++/config/locale/gnu/c_locale.cc +++ b/contrib/libstdc++/config/locale/gnu/c_locale.cc @@ -178,9 +178,29 @@ namespace std void locale::facet::_S_destroy_c_locale(__c_locale& __cloc) - { __freelocale(__cloc); } + { + if (_S_c_locale != __cloc) + __freelocale(__cloc); + } __c_locale locale::facet::_S_clone_c_locale(__c_locale& __cloc) { return __duplocale(__cloc); } + + const char* locale::_S_categories[_S_categories_size + + _S_extra_categories_size] = + { + "LC_CTYPE", + "LC_NUMERIC", + "LC_COLLATE", + "LC_TIME", + "LC_MONETARY", + "LC_MESSAGES", + "LC_PAPER", + "LC_NAME", + "LC_ADDRESS", + "LC_TELEPHONE", + "LC_MEASUREMENT", + "LC_IDENTIFICATION" + }; } // namespace std diff --git a/contrib/libstdc++/config/locale/gnu/c_locale.h b/contrib/libstdc++/config/locale/gnu/c_locale.h index aabbe6a..130b843 100644 --- a/contrib/libstdc++/config/locale/gnu/c_locale.h +++ b/contrib/libstdc++/config/locale/gnu/c_locale.h @@ -40,6 +40,8 @@ #define _GLIBCPP_C_LOCALE_GNU 1 +#define _GLIBCPP_NUM_CATEGORIES 6 + #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) namespace __gnu_cxx { diff --git a/contrib/libstdc++/config/locale/gnu/ctype_members.cc b/contrib/libstdc++/config/locale/gnu/ctype_members.cc index db1e356..3b78c60 100644 --- a/contrib/libstdc++/config/locale/gnu/ctype_members.cc +++ b/contrib/libstdc++/config/locale/gnu/ctype_members.cc @@ -44,8 +44,7 @@ namespace std ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) : ctype<char>(0, false, __refs) { - if (_M_c_locale_ctype != _S_c_locale) - _S_destroy_c_locale(_M_c_locale_ctype); + _S_destroy_c_locale(_M_c_locale_ctype); _S_create_c_locale(_M_c_locale_ctype, __s); _M_toupper = _M_c_locale_ctype->__ctype_toupper; _M_tolower = _M_c_locale_ctype->__ctype_tolower; diff --git a/contrib/libstdc++/config/locale/gnu/monetary_members.cc b/contrib/libstdc++/config/locale/gnu/monetary_members.cc index 68b154b..0386ab6 100644 --- a/contrib/libstdc++/config/locale/gnu/monetary_members.cc +++ b/contrib/libstdc++/config/locale/gnu/monetary_members.cc @@ -220,7 +220,7 @@ namespace std moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, const char*) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = '.'; @@ -265,7 +265,7 @@ namespace std moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, const char*) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = '.'; @@ -319,7 +319,7 @@ namespace std moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, const char* __name) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = L'.'; @@ -348,14 +348,12 @@ namespace std _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); _M_grouping = __nl_langinfo_l(GROUPING, __cloc); - mbstate_t __state; - size_t __len; const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); - // NB: Should swich to __cloc's ctype info first. - __len = strlen(__cpossign); + mbstate_t __state; + size_t __len = strlen(__cpossign); if (__len) { ++__len; @@ -418,7 +416,7 @@ namespace std moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc, const char* __name) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = L'.'; @@ -446,13 +444,12 @@ namespace std _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); _M_grouping = __nl_langinfo_l(GROUPING, __cloc); - mbstate_t __state; - size_t __len; const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); - // NB: Should swich to __cloc's ctype info first. + mbstate_t __state; + size_t __len; __len = strlen(__cpossign); if (__len) { diff --git a/contrib/libstdc++/config/locale/gnu/numeric_members.cc b/contrib/libstdc++/config/locale/gnu/numeric_members.cc index b71374c..a502bfb 100644 --- a/contrib/libstdc++/config/locale/gnu/numeric_members.cc +++ b/contrib/libstdc++/config/locale/gnu/numeric_members.cc @@ -42,7 +42,7 @@ namespace std void numpunct<char>::_M_initialize_numpunct(__c_locale __cloc) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = '.'; @@ -76,7 +76,7 @@ namespace std void numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale _M_decimal_point = L'.'; diff --git a/contrib/libstdc++/config/locale/gnu/time_members.cc b/contrib/libstdc++/config/locale/gnu/time_members.cc index ce3d9bf..7df10b8 100644 --- a/contrib/libstdc++/config/locale/gnu/time_members.cc +++ b/contrib/libstdc++/config/locale/gnu/time_members.cc @@ -40,13 +40,6 @@ namespace std { template<> - __timepunct<char>::~__timepunct() - { - if (_M_c_locale_timepunct != _S_c_locale) - _S_destroy_c_locale(_M_c_locale_timepunct); - } - - template<> void __timepunct<char>:: _M_put(char* __s, size_t __maxlen, const char* __format, @@ -67,11 +60,10 @@ namespace std void __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale - - _M_c_locale_timepunct = _S_c_locale; + _M_c_locale_timepunct = _S_c_locale; _M_date_format = "%m/%d/%y"; _M_date_era_format = "%m/%d/%y"; @@ -193,13 +185,6 @@ namespace std #ifdef _GLIBCPP_USE_WCHAR_T template<> - __timepunct<wchar_t>::~__timepunct() - { - if (_M_c_locale_timepunct != _S_c_locale) - _S_destroy_c_locale(_M_c_locale_timepunct); - } - - template<> void __timepunct<wchar_t>:: _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, @@ -220,11 +205,10 @@ namespace std void __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) { - if (__cloc == _S_c_locale) + if (!__cloc) { // "C" locale - - _M_c_locale_timepunct = _S_c_locale; + _M_c_locale_timepunct = _S_c_locale; _M_date_format = L"%m/%d/%y"; _M_date_era_format = L"%m/%d/%y"; diff --git a/contrib/libstdc++/config/os/gnu-linux/bits/ctype_noninline.h b/contrib/libstdc++/config/os/gnu-linux/bits/ctype_noninline.h index 1578828..8f06d13 100644 --- a/contrib/libstdc++/config/os/gnu-linux/bits/ctype_noninline.h +++ b/contrib/libstdc++/config/os/gnu-linux/bits/ctype_noninline.h @@ -38,8 +38,7 @@ const ctype_base::mask* ctype<char>::classic_table() throw() { - if (!_S_c_locale) - _S_create_c_locale(_S_c_locale, "C"); + locale::classic(); return _S_c_locale->__ctype_b; } #else @@ -96,7 +95,7 @@ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del) { - _M_c_locale_ctype = _S_c_locale; + _M_c_locale_ctype = _S_c_locale; _M_toupper = _M_c_locale_ctype->__ctype_toupper; _M_tolower = _M_c_locale_ctype->__ctype_tolower; _M_table = __table ? __table : _M_c_locale_ctype->__ctype_b; |