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.

Reply via email to