[Bug libstdc++/86245] _GLIBCXX_LONG_DOUBLE_COMPAT GLIBCXX_3.4.21 issues
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jun 28 12:48:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86245
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ABI
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-06-28
Ever confirmed|0 |1
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This is my fault, as I misunderstood the purpose of the LONG_DOUBLE_COMPAT
symbols and thought they weren't needed for the new types I added in the
std::__cxx11 namespace.
All the new facets using the new std::string got put in the __cxx11 namespace,
so don't match the patterns that give the GLIBCXX_LDBL symver to everything in
std::__gnu_cxx_ldbl128::*
Furthermore, in <bits/locale_facets_nonio.h> we have:
// XXX GLIBCXX_ABI Deprecated
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ \
&& (_GLIBCXX_USE_CXX11_ABI == 0
virtual iter_type
__do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
ios_base::iostate& __err, double& __units) const;
#else
virtual iter_type
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
ios_base::iostate& __err, long double& __units) const;
#endif
That placeholder in the vtable should still be there even when
_GLIBCXX_USE_CXX11_ABI != 0
Apparently we don't have anything that actually tests whether the
LONG_DOUBLE_COMPAT stuff works as intended, or this would have been noticed
when I did the __cxx11 work.
More information about the Gcc-bugs
mailing list