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)


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.


BTW: segment sizes differ considerably:

$ size */smartctl.exe
   text    data     bss     dec     hex filename
 459725    6956   66320  533001   82209 gcc-4-old-strings/smartctl.exe
 451525    7424   66260  525209   80399 gcc-5-new-strings/smartctl.exe
 517337    8912   66196  592445   90a3d gcc-5-old-strings/smartctl.exe

Christian


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


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