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: [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.


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