This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [RFC] C++1x breaking the ABI in one more place :(
Hi,
> -fdump-class-hierarchy might help.
Indeed it does, thanks for the tip, and now I see where exactly I was
wrong and also where I was right ;)
abi_check fails complaining about the increased size of the *vtable* not
the class itself. Thus we have now, where the last line is new:
Vtable for std::time_get<char>
std::time_get<char>::_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE:
11u entries
0 (int (*)(...))0
8 (int (*)(...))(&
_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE)
16 std::time_get<_CharT, _InIter>::~time_get [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >]
24 std::time_get<_CharT, _InIter>::~time_get [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >]
32 std::time_get<_CharT, _InIter>::do_date_order [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >]
40 std::time_get<_CharT, _InIter>::do_get_time [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
48 std::time_get<_CharT, _InIter>::do_get_date [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
56 std::time_get<_CharT, _InIter>::do_get_weekday [with _CharT =
char, _InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
64 std::time_get<_CharT, _InIter>::do_get_monthname [with _CharT =
char, _InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
72 std::time_get<_CharT, _InIter>::do_get_year [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
80 std::time_get<_CharT, _InIter>::do_get [with _CharT = char,
_InIter = std::istreambuf_iterator<char, std::char_traits<char> >,
iter_type = std::istreambuf_iterator<char, std::char_traits<char> >,
std::ios_base::iostate = std::_Ios_Iostate]
Now I need help about figuring out of serious is this issue: suppose we
are exporting this new vtable and an old binary tries to link against
it. Would it break? (I know, this a naive question, but nobody else as
far as I can see is tackling seriously this issue, thus it's time(_get
;) If there is hope to not break old binaries, thus we can make
progress, we have to figure out next how to loosen abi_check...
Paolo.