On 31.01.2017 16:29, James Cowgill wrote: > 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.
ok, now created https://wiki.debian.org/GCC7. Feel free to provide such information there.

