[9/10 PATCH] Update {x86_64,i?86,powerpc64,s390x,aarch64}-linux baseline_symbols.txt files

Jonathan Wakely jwakely@redhat.com
Fri Apr 26 17:12:00 GMT 2019


On 26/04/19 18:44 +0200, Jakub Jelinek wrote:
>On Fri, Apr 26, 2019 at 03:05:36PM +0100, Jonathan Wakely wrote:
>>     Jakub noted in https://gcc.gnu.org/ml/libstdc++/2019-04/msg00140.html
>>     that an unwanted std::wstring::_M_replace_dispatch symbol has started to
>>     be exported from the Fedora shared library. This symbol is triggered by
>>     the instantiation of std::wstring::assign(const char*, const char*) from
>>     std::__str_codecvt_in which is called from path::_S_convert_loc. The
>>     branch that triggers that instantiation can't actually happen in that
>>     case, because codecvt facets will only return noconv when the input and
>>     output types are the same. Guarding the assign call with an if-constexpr
>>     check that the types are the same avoids instantiating template
>>     specializations that will never actually be needed.
>>
>>             * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
>>             wstring::_M_replace_dispatch with more specific patterns.
>
>Can you please commit this part to 9.1 now as well (so that we don't export
>it from 9.1.0 by accident)?

Done 8 seconds before your email, as r270611 :-)

>The rest is fine for 9.2 if you want or just on the trunk, whatever you
>think is better.

It's on trunk for now. I'll probably do it for 9.2 as well, because
the bits/fs_path.h change avoids an unnecessary dynamic allocation,
and the bits/locale_conv.h change makes the library smaller:

$ size /home/jwakely/src/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.26 
   text    data     bss     dec     hex filename
1855147   50792   13536 1919475  1d49f3 /home/jwakely/src/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.26.before
1853624   50792   13536 1917952  1d4400 /home/jwakely/src/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.26.after

It's certainly not critical, but it's a small improvement with no
downside.



>>             * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
>>             Create const std::string to avoid redundant call to _S_convert_loc
>>             with non-const pointers.
>>             * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
>>             avoid unnecessary basic_string::assign instantiations.
>
>	Jakub



More information about the Libstdc++ mailing list