[Pkg-ime-devel] Bug#791178: Bug#791178: libucimf: library transition may be needed when GCC 5 is the default

ChangZhuo Chen (=?UTF-8?Q?=E9=99=B3=E6=98=8C=E5=80=AC?=) czchen at gmail.com
Fri Jul 3 16:55:00 UTC 2015


On Fri, Jul 03, 2015 at 01:12:25PM +0000, Matthias Klose wrote:
> Package: src:libucimf
> Version: 2.3.8-6
> Severity: important
> Tags: sid stretch
> User: debian-gcc at lists.debian.org
> Usertags: libstdc++-cxx11
> 
> Background [1]: libstdc++6 introduces a new ABI to conform to the
> C++11 standard, but keeps the old ABI to not break existing binaries.
> Packages which are built with g++-5 from experimental (not the one
> from testing/unstable) are using the new ABI.  Libraries built from
> this source package export some of the new __cxx11 or B5cxx11 symbols,
> and dropping other symbols.  If these symbols are part of the API of
> the library, then this rebuild with g++-5 will trigger a transition
> for the library.
> 
> What is needed:
> 
>  - Rebuild the library using g++/g++-5 from experimental. Note that
>    most likely all C++ libraries within the build dependencies need
>    a rebuild too. You can find the log for a rebuild in
>      https://people.debian.org/~doko/logs/gcc5-20150701/
>    Search for "BEGIN GCC CXX11" in the log.

I use the following command to find problemic symbols.

    objdump -T usr/lib/x86_64-linux-gnu/libucimf.so.0.0.0|egrep '__cxx11|B5cxx11'|grep -v '*UND*'|c++filt

The following is result:

    000000000000afd0 g    DF .text	0000000000000080  Base        ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    000000000000afd0 g    DF .text	0000000000000080  Base        ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    000000000000aca0 g    DF .text	0000000000000154  Base        ustring::out[abi:cxx11](char const*) const
    000000000000a9b0  w   DF .text	000000000000005a  Base        std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)
    000000000000aa10  w   DF .text	0000000000000290  Base        std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)

Since the depends fbterm-ucimf does not use these symbols, libucimf
matches the following scenario.

>  - If there are no reverse dependencies, it should be the package
>    maintainers decision if a transition is needed.  However this might
>    break software which is not in the Debian archive, and built
>    against these packages.

So we do not necessary to do the transition, right?

-- 
ChangZhuo Chen (陳昌倬) <czchen at gmail.com>
http://czchen.info/
Key fingerprint = EC9F 905D 866D BE46 A896  C827 BE0C 9242 03F4 552D
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-ime-devel/attachments/20150704/8b275fa4/attachment.sig>


More information about the Pkg-ime-devel mailing list