[lsb-discuss] what is the current libchk status in LSB 4.0 and 4.1?

Denis Silakov dsilakov at gmail.com
Thu May 16 12:24:15 UTC 2013


This tool can be also used to easy observer vtable structure - 
https://github.com/lvc/vtable-dumper

(iirc, it just performs the same actions as Karel mentioned)

On 05/16/2013 04:05 PM, Karel Srot wrote:
> Hi,
>
> I am forwarding a feedback from our engineer Benjamin Kosnik regarding
> similar failure
>
> Message from the test:
>
> Symbol address found for Virtual table entry [0][1] 0xfff86ae4bf8 (found) doesn't match 0xfff86ae4c08 (expected)
> Virtual Function[0][1] NULL or _ZNSt21__ctype_abstract_baseIcED0Ev (expected) doesn't match _ZNSt14collate_bynameIcED0Ev (found)
> Unmangled expected: std::__ctype_abstract_base<char>::~__ctype_abstract_base()
> Unmangled found...: std::collate_byname<char>::~collate_byname()
> [!!!] Unqualified function names do not match:
>   (expected) ~__ctype_abstract_base()
>   (.found..) ~collate_byname()
>
>
> Test Purpose Comment: _ZSt21__ctype_abstract_baseIcE virtual function pointers
>
> This is very problematic, in that std::__ctype_abstract_base<char> is never instantiated by user or library code. Instead, the std::ctype<char> class is derived from std::locale::facet, and std::ctype_base.
>
> If you're wondering, "hey, does this libstdc++.so have a std::ctype<char> facet that works?" Well then, the answer is in libstdc++-v3/testsuite/22_locale/ctype*. This is part of "make check" in the gcc package, so if there are fails there then be concerned. And the same for codecvt, in libstdc++-v3/testsuite/22_locale/codecvt*.
>
> Instead, this testsuite is looking at libstdc++ exports. In fact, there is a vtable emitted for std::ctype<char>, due to the use of "inline template" explicit instantiations in src/locale-inst.cc. This I consider a build/versioning oversight/mistake that now must be maintained for ABI compat.
>
> But you want to verify on a built machine.
>
> You can re-make the file with the vtables (locale-inst.o), and instrument it as follows:
>
> cd LIBCXXBLD/src/c++98;
> make CXXFLAGS="-g -O2 -fdump-class-hierarchy" locale-inst.o
>
> then, look at the generated files:
>
> locale-inst.o
> locale-inst.cc.002t.class
>
>

-- 
Regards,
Denis.



More information about the lsb-discuss mailing list