Paolo, there seems to be one extra issue about this patch. It causes quite a twist in libstdc++ exported symbols. It is purpose of the patch to remove those that are going to be generated in user programs, too. I am however bit confused about bad array. Perhaps it is an optimization difference dragging it in? Does the changes look sensible?
Honza 21 added symbols 0 _ZNSt20bad_array_new_lengthD2Ev std::bad_array_new_length::~bad_array_new_length() version status: compatible CXXABI_1.3.8 type: function status: added 1 __cxa_throw_bad_array_length version status: compatible CXXABI_1.3.8 type: function status: added 2 _ZNKSt20bad_array_new_length4whatEv std::bad_array_new_length::what() const version status: compatible CXXABI_1.3.8 type: function status: added 3 _ZNSt20bad_array_new_lengthD0Ev std::bad_array_new_length::~bad_array_new_length() version status: compatible CXXABI_1.3.8 type: function status: added 4 _ZSt14get_unexpectedv std::get_unexpected() version status: compatible GLIBCXX_3.4.20 type: function status: added 5 _ZTVSt16bad_array_length vtable for std::bad_array_length version status: compatible CXXABI_1.3.8 type: object type size: 40 status: added 6 _ZTSSt16bad_array_length typeinfo name for std::bad_array_length version status: compatible CXXABI_1.3.8 type: object type size: 21 status: added 7 _ZNSt16bad_array_lengthD2Ev std::bad_array_length::~bad_array_length() version status: compatible CXXABI_1.3.8 type: function status: added 8 _ZSt15get_new_handlerv std::get_new_handler() version status: compatible GLIBCXX_3.4.20 type: function status: added 9 CXXABI_1.3.8 version status: compatible type: object type size: 0 status: added 10 _ZTVSt20bad_array_new_length vtable for std::bad_array_new_length version status: compatible CXXABI_1.3.8 type: object type size: 40 status: added 11 _ZTSSt20bad_array_new_length typeinfo name for std::bad_array_new_length version status: compatible CXXABI_1.3.8 type: object type size: 25 status: added 12 GLIBCXX_3.4.20 version status: compatible type: object type size: 0 status: added 13 _ZTISt20bad_array_new_length typeinfo for std::bad_array_new_length version status: compatible CXXABI_1.3.8 type: object type size: 24 status: added 14 _ZSt13get_terminatev std::get_terminate() version status: compatible GLIBCXX_3.4.20 type: function status: added 15 _ZNSt16bad_array_lengthD0Ev std::bad_array_length::~bad_array_length() version status: compatible CXXABI_1.3.8 type: function status: added 16 __cxa_throw_bad_array_new_length version status: compatible CXXABI_1.3.8 type: function status: added 17 _ZNSt16bad_array_lengthD1Ev std::bad_array_length::~bad_array_length() version status: compatible CXXABI_1.3.8 type: function status: added 18 _ZTISt16bad_array_length typeinfo for std::bad_array_length version status: compatible CXXABI_1.3.8 type: object type size: 24 status: added 19 _ZNSt20bad_array_new_lengthD1Ev std::bad_array_new_length::~bad_array_new_length() version status: compatible CXXABI_1.3.8 type: function status: added 20 _ZNKSt16bad_array_length4whatEv std::bad_array_length::what() const version status: compatible CXXABI_1.3.8 type: function status: added 17 missing symbols 0 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::xsputn(wchar_t const*, long) version status: unversioned type: function status: subtracted 1 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 2 _ZNKSt5ctypeIcE8do_widenEc std::ctype<char>::do_widen(char) const version status: unversioned type: function status: subtracted 3 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::xsgetn(char*, long) version status: unversioned type: function status: subtracted 4 _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 5 _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev std::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 6 _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj __cxxabiv1::__pbase_type_info::__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const version status: unversioned type: function status: subtracted 7 _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc std::ctype<char>::do_widen(char const*, char const*, char*) const version status: unversioned type: function status: subtracted 8 _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev std::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 9 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 10 _ZNKSt5ctypeIcE9do_narrowEcc std::ctype<char>::do_narrow(char, char) const version status: unversioned type: function status: subtracted 11 _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 12 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 13 _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc std::ctype<char>::do_narrow(char const*, char const*, char, char*) const version status: unversioned type: function status: subtracted 14 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::xsgetn(wchar_t*, long) version status: unversioned type: function status: subtracted 15 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 16 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::xsputn(char const*, long) version status: unversioned type: function status: subtracted 2 undesignated symbols 0 _ZSt11__once_call std::__once_call version status: compatible GLIBCXX_3.4.11 type: tls type size: 8 status: undesignated 1 _ZSt15__once_callable std::__once_callable version status: compatible GLIBCXX_3.4.11 type: tls type size: 8 status: undesignated 17 incompatible symbols 0 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::xsputn(wchar_t const*, long) version status: unversioned type: function status: subtracted 1 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 2 _ZNKSt5ctypeIcE8do_widenEc std::ctype<char>::do_widen(char) const version status: unversioned type: function status: subtracted 3 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::xsgetn(char*, long) version status: unversioned type: function status: subtracted 4 _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 5 _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev std::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 6 _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj __cxxabiv1::__pbase_type_info::__pointer_catch(__cxxabiv1::__pbase_type_info const*, void**, unsigned int) const version status: unversioned type: function status: subtracted 7 _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc std::ctype<char>::do_widen(char const*, char const*, char*) const version status: unversioned type: function status: subtracted 8 _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev std::basic_stringbuf<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 9 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 10 _ZNKSt5ctypeIcE9do_narrowEcc std::ctype<char>::do_narrow(char, char) const version status: unversioned type: function status: subtracted 11 _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf() version status: unversioned type: function status: subtracted 12 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 13 _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc std::ctype<char>::do_narrow(char const*, char const*, char, char*) const version status: unversioned type: function status: subtracted 14 _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t> >::xsgetn(wchar_t*, long) version status: unversioned type: function status: subtracted 15 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::~stdio_sync_filebuf() version status: unversioned type: function status: subtracted 16 _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::xsputn(char const*, long) version status: unversioned type: function status: subtracted