Bug#853626: python-sfml: ftbfs with GCC-7

James Cowgill jcowgill at debian.org
Tue Jan 31 15:29:28 UTC 2017


On 31/01/17 14:10, Matthias Klose wrote:
> On 31.01.2017 13:05, James Cowgill wrote:
>> $ c++filt _ZNK2sf6StringcvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv
>> sf::String::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >() const
>>
>> This seems to be one of the conversion operator ABI breaks described in
>> the GCC 7 porting guide, so I have cloned this bug to libsfml to deal
>> with that for buster.
>>
>> Do you have a plan to identify these in general for the whole archive
>> (maybe scanning symbol tables)? The only reason this was caught was
>> python-sfml's test suite.
> 
> sorry, had the test rebuild first, didn't do any further analysis besides the ICEs.
> 
> you probably could also look at the dpkg-gensymbols failures in the test rebuild
> to identify more of these issues.  Do we have a list of all these symbols involved?

I see now that this isn't actually an ABI break. GCC 7 will insert some
compatibility aliases in libraries according to:
https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html

If I compile libsfml with -Wabi=10 then GCC tells me exactly what's
happened:
> [ 16%] Building CXX object src/SFML/System/CMakeFiles/sfml-system.dir/Unix/ThreadLocalImpl.cpp.o
> cd /tmp/sfml/libsfml-2.4.1+dfsg/obj-x86_64-linux-gnu/src/SFML/System && /usr/bin/g++-7   -DSFML_SYSTEM_EXPORTS -I/tmp/sfml/libsfml-2.4.1+dfsg/include -I/tmp/sfml/libsfml-2.4.1+dfsg/src  -g -O2 -fdebug-prefix-map=/tmp/sfml/libsfml-2.4.1+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wabi=10 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC   -fvisibility=hidden -o CMakeFiles/sfml-system.dir/Unix/ThreadLocalImpl.cpp.o -c /tmp/sfml/libsfml-2.4.1+dfsg/src/SFML/System/Unix/ThreadLocalImpl.cpp
> /tmp/sfml/libsfml-2.4.1+dfsg/src/SFML/System/String.cpp:143:1: warning: the mangled name of ‘sf::String::operator std::__cxx11::wstring() const’ changed between -fabi-version=10 (_ZNK2sf6StringcvNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEB5cxx11Ev) and -fabi-version=11 (_ZNK2sf6StringcvNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEv) [-Wabi]
>  String::operator std::wstring() const
>  ^~~~~~
> /tmp/sfml/libsfml-2.4.1+dfsg/src/SFML/System/String.cpp:136:1: warning: the mangled name of ‘sf::String::operator std::__cxx11::string() const’ changed between -fabi-version=10 (_ZNK2sf6StringcvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEB5cxx11Ev) and -fabi-version=11 (_ZNK2sf6StringcvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEv) [-Wabi]
>  String::operator std::string() const
>  ^~~~~~

So I think we just need to bump the shlibs / add some symbols like what
normally happens on new gcc versions.

This is the mangled part for "operator std::string"
 cvNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
This is the mangled part for "operator std::wstring"
 cvNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE

I think libraries which export symbols containing one of the above
strings might be affected by this.

Thanks,
James

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-games-devel/attachments/20170131/548900ed/attachment.sig>


More information about the Pkg-games-devel mailing list