This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

On 06/10/15 18:51, Ken Brown wrote:
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
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] -
As far as I know, every gcc release will break C++ ABI, so it would
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

- 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?

My understanding is that if 'L' is built with -D_GLIBCXX_USE_CXX11_ABI=0 then P wouldn't need to be rebuilt (I haven't tested that, though). However, this compiler switch loses some C++11 features of the STL, so it isn't a magic cure.


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]