Hi Jonathan, > On 06/01/19 17:59 +0100, Rainer Orth wrote: >>Hi Jonathan, >> >>> The C++17 standard added some new members to std::basic_string, which >>> were not previously instantiated in the library. This meant that the >>> extern template declarations had to be disabled for C++17 mode. With >>> this patch the new members are instantiated in the library and so the >>> explicit instantiation declarations can be used for C++17. >>> >>> The new members added by C++2a are still not exported, and so the >>> explicit instantiation declarations are still disabled for C++2a. >>> >>> * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy >>> for const member functions of std::basic_string. >>> (GLIBCXX_3.4.26): Export member functions of std::basic_string added >>> in C++17. >>> * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)): >>> Make non-standard constructor private. >>> [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)): >>> Likewise. >>> * include/bits/basic_string.tcc (std::string, std::wstring): Declare >>> explicit instantiations for C++17 as well as earlier dialects. >>> * src/c++17/Makefile.am: Add new source files. >>> * src/c++17/Makefile.in: Regenerate. >>> * src/c++17/cow-string-inst.cc: New file defining explicit >>> instantiations for basic_string member functions added in C++17. >>> * src/c++17/string-inst.cc: Likewise. >>> >>> Tested powerpc64le-linux, committed to trunk. >> >>this patch broke Solaris bootstrap: >> >>ld: fatal: libstdc++-symbols.ver-sun: 6705: symbol >> 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >> >::operator std::basic_string_view<char, std::char_traits<char> >() >> const': symbol version conflict >>ld: fatal: libstdc++-symbols.ver-sun: 6707: symbol >> 'std::basic_string<wchar_t, std::char_traits<wchar_t>, >> std::allocator<wchar_t> >::operator std::basic_string_view<wchar_t, >> std::char_traits<wchar_t> >() const': symbol version conflict >>ld: fatal: libstdc++-symbols.ver-sun: 6712: symbol >> 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >> >::data()': symbol version conflict >>ld: fatal: libstdc++-symbols.ver-sun: 6714: symbol >> 'std::basic_string<wchar_t, std::char_traits<wchar_t>, >> std::allocator<wchar_t> >::data()': symbol version conflict >>ld: fatal: libstdc++-symbols.ver-sun: 6723: symbol >> 'std::__cxx11::basic_string<char, std::char_traits<char>, >> std::allocator<char> >::_S_to_string_view(std::basic_string_view<char, >> std::char_traits<char> >)': symbol version conflict >>ld: fatal: libstdc++-symbols.ver-sun: 6724: symbol >> 'std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, >> std::allocator<wchar_t> >> >::_S_to_string_view(std::basic_string_view<wchar_t, >> std::char_traits<wchar_t> >)': symbol version conflict >>collect2: error: ld returned 1 exit status >>make[6]: *** [Makefile:696: libstdc++.la] Error 1 > > Sorry :-( > > [...] > >>The following patch allowed the build to finish. > > OK for trunk, thanks.
installed now with the following ChangeLog entry: 2019-01-07 Rainer Orth <r...@cebitec.uni-bielefeld.de> * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns. (GLIBCXX_3.4.21): Likewise. > I'll make sure to run my script to check for such conflicts before > adding any more symbols. Thanks for double-checking. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University