This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Couple of new issues in mainline


Paolo Carlini wrote:

Well, maybe the solution for those boring issues is very simple (in principle): use for gnu-linux systems too (besides x86-darwin, per Howard's patch, which, by the way, is approved but still unapplied, I'm going to take care of that), -fvisibility-inlines-hidden! I think that (in principle, again), there are no objections, therefore I'm going to prepare that configury change and check that nothing breaks...

... and something breaks: turns out we have in the ABI baseline quite a few inlines, see below. We should analyze this issue more in detail. Something I don't fully understand is going on with the std exception classes destructors, which are indeed trivial but *not* inline: those appear as 'W' in stdexcept.o, but as 't' in the final .so (thus in the below). Similarly for ~basic_stringbuf, synthetized by the compiler, it appear as 'W' in sstream-inst.o and as 't' in the .so. It looks like this 'W' -> 't' change is the visibility fall-out of a link-time optimization, which at the moment I don't fully understand (help in clarifying this issue would be particularly appreciated)


For reference, I'm also attaching the trivial configure.host change I'm using.

Paolo.

///////////

23 missing symbols
0
_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



1 _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc std::ctype<char>::do_widen(char const*, char const*, char*) const 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 _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc std::ctype<char>::do_narrow(char const*, char const*, char, char*) const version status: unversioned type: function status: subtracted


4 _ZNKSt5ctypeIcE9do_narrowEcc std::ctype<char>::do_narrow(char, char) const version status: unversioned type: function status: subtracted


5 _ZNSt11range_errorD0Ev std::range_error::~range_error() version status: unversioned type: function status: subtracted


6 _ZNSt11range_errorD1Ev std::range_error::~range_error() version status: unversioned type: function status: subtracted


7 _ZNSt12domain_errorD0Ev std::domain_error::~domain_error() version status: unversioned type: function status: subtracted


8 _ZNSt12domain_errorD1Ev std::domain_error::~domain_error() version status: unversioned type: function status: subtracted


9 _ZNSt12length_errorD0Ev std::length_error::~length_error() version status: unversioned type: function status: subtracted


10 _ZNSt12length_errorD1Ev std::length_error::~length_error() version status: unversioned type: function status: subtracted


11 _ZNSt12out_of_rangeD0Ev std::out_of_range::~out_of_range() version status: unversioned type: function status: subtracted


12 _ZNSt12out_of_rangeD1Ev std::out_of_range::~out_of_range() version status: unversioned type: function status: subtracted


13 _ZNSt14overflow_errorD0Ev std::overflow_error::~overflow_error() version status: unversioned type: function status: subtracted


14 _ZNSt14overflow_errorD1Ev std::overflow_error::~overflow_error() version status: unversioned type: function status: subtracted


15
_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev
std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf()
version status: unversioned
type: function
status: subtracted



16
_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev
std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::~basic_stringbuf()
version status: unversioned
type: function
status: subtracted



17
_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



18
_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



19 _ZNSt15underflow_errorD0Ev std::underflow_error::~underflow_error() version status: unversioned type: function status: subtracted


20 _ZNSt15underflow_errorD1Ev std::underflow_error::~underflow_error() version status: unversioned type: function status: subtracted


21 _ZNSt16invalid_argumentD0Ev std::invalid_argument::~invalid_argument() version status: unversioned type: function status: subtracted


22 _ZNSt16invalid_argumentD1Ev std::invalid_argument::~invalid_argument() version status: unversioned type: function status: subtracted



Index: configure.host
===================================================================
--- configure.host	(revision 119450)
+++ configure.host	(working copy)
@@ -220,6 +220,7 @@
       os_include_dir="os/uclibc"
     else
       os_include_dir="os/gnu-linux"
+      OPTIMIZE_CXXFLAGS="${OPTIMIZE_CXXFLAGS} -fvisibility-inlines-hidden"
     fi
     ;;
   hpux*)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]