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] |
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 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. Ahwell, we have maintainers for most packages in Cygwin, so we'll have toco-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?
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.
Dave. -- 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] |