Updated: gcc-5.2.0-1 (Test x86/x86_64)

Ken Brown kbrown@cornell.edu
Tue Oct 6 17:51:00 GMT 2015


On 10/6/2015 12:26 PM, Christian Franke wrote:
> cyg Simple wrote:
>> On 9/30/2015 7:36 PM, David Stacey wrote:
>>> On 30/09/15 23:34, JonY wrote:
>>>> On 10/1/2015 00:05, David Stacey wrote:
>>>>> On 30/09/15 12:15, JonY wrote:
>>>>>> gcc-5.2.0-1 has been uploaded for 32bit and 64bit Cygwin.
>>>>>>
>>>>>> This is the first series of the 5.x releases, and should be
>>>>>> considered
>>>>>> as experimental as such.
>>>>> Have you managed to work around the ABI change in gcc-5 [1], or will
>>>>> this require a mass rebuild at the point gcc-5 becomes 'current'?
>>>>>
>>>>> [1] -http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/
>>>> As far as I know, every gcc release will break C++ ABI, so it would
>>>> mean
>>>> rebuilding everything C++.
>>> According to the Red Hat blog above, the last time g++ caused an ABI
>>> change was back in the 3.x days, so it hasn't happened for a while. Ah
>>> well, we have maintainers for most packages in Cygwin, so we'll have to
>>> co-ordinate a rebuild.
>> Regardless, JonY is correct.  Every C++ release, regardless of the
>> vendor, causes an ABI break with shared libraries and the naming of the
>> object elements (mangled names).
>
> Probably not in this 4.X -> 5.X case. Otherwise the new cygstdc++-6.dll
> should IMO be renamed to -6.1, -7 or similar.
>
> A diff of exported symbols of cygstdc++-6.dll 4.9.3-1 and 5.2.0 shows
> that the new version only adds new symbols.
>
>
> Results of a quick build check with smartmontools package:
>
> - Existing package which was built with g++ 4.9.2 runs with 5.2.0
> cygstdc++-6.dll and cyggcc_s-1.dll.
>
> - A rebuild with g++ 5.2.0 does not run with 4.9.3 cygstdc++-6.dll due
> to missing symbols. This is as expected because 5.X adds a new C++11
> conforming std::string which is used by default
> (https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html).
>
> - A rebuild with g++ 5.2.0 and CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 runs
> with old 4.9.3 cygstdc++-6.dll and cyggcc_s.dll.
>
> So there is probably no need to rebuild existing C++ packages.

What about the following scenario: Package P links against library L. 
Library L is rebuilt to use the new ABI.  Isn't it possible that package 
P will then have to be rebuilt as well?

Ken


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list