[arch-dev-public] gcc-4.7.1-5 rebuild
Hi all, gcc-4.7 introduced some c++11 support, but unfortunately this resulted in a changed ABI for files compiled with c++98/03 support and those complied with c++11. So, if a library used c++11 but linked to a library using c++98, there could be crashes due to incompatibilities between these. The gcc-4.7.1-5 package uses a snapshot with the needed patches to fix this issue. However, c++11 code compiled with any earlier 4.7.x version possibly be incompatible with c++11 code compiled with gcc-4.7.1-5 and above and anything compiled with c++98/03. I have created a TODO list that includes everything linking to libstdc++.so and that was built since gcc-4.7.0 entered the repos. It is a big list, but only software that used --std=c++11 when compiling need recompiled. Look at your build output (you do keep the logs for future reference...) and decide if your package needs recompiled or not. More details: http://jaegerandi.blogspot.com.au/2012/07/gcc-47-c-abi-changes-and-opensuse-... http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a245605f http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=74ca4097 Allan
On Sun, Jul 22, 2012 at 1:21 AM, Allan McRae <allan@archlinux.org> wrote:
Hi all,
gcc-4.7 introduced some c++11 support, but unfortunately this resulted in a changed ABI for files compiled with c++98/03 support and those complied with c++11. So, if a library used c++11 but linked to a library using c++98, there could be crashes due to incompatibilities between these.
The gcc-4.7.1-5 package uses a snapshot with the needed patches to fix this issue. However, c++11 code compiled with any earlier 4.7.x version possibly be incompatible with c++11 code compiled with gcc-4.7.1-5 and above and anything compiled with c++98/03.
I have created a TODO list that includes everything linking to libstdc++.so and that was built since gcc-4.7.0 entered the repos. It is a big list, but only software that used --std=c++11 when compiling need recompiled. Look at your build output (you do keep the logs for future reference...) and decide if your package needs recompiled or not.
More details: http://jaegerandi.blogspot.com.au/2012/07/gcc-47-c-abi-changes-and-opensuse-... http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a245605f http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=74ca4097
Allan
I noticed that you pushed the new gcc in the [testing] repo whereas rebuilds are usually done in [staging]. Is that wanted? If so, does the rebuilded packages go in [testing] repo? Eric
On 22/07/12 17:17, Eric Bélanger wrote:
On Sun, Jul 22, 2012 at 1:21 AM, Allan McRae <allan@archlinux.org> wrote:
Hi all,
gcc-4.7 introduced some c++11 support, but unfortunately this resulted in a changed ABI for files compiled with c++98/03 support and those complied with c++11. So, if a library used c++11 but linked to a library using c++98, there could be crashes due to incompatibilities between these.
The gcc-4.7.1-5 package uses a snapshot with the needed patches to fix this issue. However, c++11 code compiled with any earlier 4.7.x version possibly be incompatible with c++11 code compiled with gcc-4.7.1-5 and above and anything compiled with c++98/03.
I have created a TODO list that includes everything linking to libstdc++.so and that was built since gcc-4.7.0 entered the repos. It is a big list, but only software that used --std=c++11 when compiling need recompiled. Look at your build output (you do keep the logs for future reference...) and decide if your package needs recompiled or not.
More details: http://jaegerandi.blogspot.com.au/2012/07/gcc-47-c-abi-changes-and-opensuse-... http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a245605f http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=74ca4097
I noticed that you pushed the new gcc in the [testing] repo whereas rebuilds are usually done in [staging]. Is that wanted? If so, does the rebuilded packages go in [testing] repo?
Packages that are broken are already broken... I don't even intend to wait for the rebuild to be finished to move gcc to [core]. Allan
On 22/07/12 17:24, Allan McRae wrote:
On 22/07/12 17:17, Eric Bélanger wrote:
On Sun, Jul 22, 2012 at 1:21 AM, Allan McRae <allan@archlinux.org> wrote:
Hi all,
gcc-4.7 introduced some c++11 support, but unfortunately this resulted in a changed ABI for files compiled with c++98/03 support and those complied with c++11. So, if a library used c++11 but linked to a library using c++98, there could be crashes due to incompatibilities between these.
The gcc-4.7.1-5 package uses a snapshot with the needed patches to fix this issue. However, c++11 code compiled with any earlier 4.7.x version possibly be incompatible with c++11 code compiled with gcc-4.7.1-5 and above and anything compiled with c++98/03.
I have created a TODO list that includes everything linking to libstdc++.so and that was built since gcc-4.7.0 entered the repos. It is a big list, but only software that used --std=c++11 when compiling need recompiled. Look at your build output (you do keep the logs for future reference...) and decide if your package needs recompiled or not.
More details: http://jaegerandi.blogspot.com.au/2012/07/gcc-47-c-abi-changes-and-opensuse-... http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a245605f http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=74ca4097
I noticed that you pushed the new gcc in the [testing] repo whereas rebuilds are usually done in [staging]. Is that wanted? If so, does the rebuilded packages go in [testing] repo?
Packages that are broken are already broken... I don't even intend to wait for the rebuild to be finished to move gcc to [core].
Just to clarify, rebuilt packages should go in [testing] until gcc is signed off and moved. Allan
On 22/07/12 17:25, Allan McRae wrote:
On 22/07/12 17:24, Allan McRae wrote:
On 22/07/12 17:17, Eric Bélanger wrote:
On Sun, Jul 22, 2012 at 1:21 AM, Allan McRae <allan@archlinux.org> wrote:
Hi all,
gcc-4.7 introduced some c++11 support, but unfortunately this resulted in a changed ABI for files compiled with c++98/03 support and those complied with c++11. So, if a library used c++11 but linked to a library using c++98, there could be crashes due to incompatibilities between these.
The gcc-4.7.1-5 package uses a snapshot with the needed patches to fix this issue. However, c++11 code compiled with any earlier 4.7.x version possibly be incompatible with c++11 code compiled with gcc-4.7.1-5 and above and anything compiled with c++98/03.
I have created a TODO list that includes everything linking to libstdc++.so and that was built since gcc-4.7.0 entered the repos. It is a big list, but only software that used --std=c++11 when compiling need recompiled. Look at your build output (you do keep the logs for future reference...) and decide if your package needs recompiled or not.
More details: http://jaegerandi.blogspot.com.au/2012/07/gcc-47-c-abi-changes-and-opensuse-... http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=a245605f http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=74ca4097
I noticed that you pushed the new gcc in the [testing] repo whereas rebuilds are usually done in [staging]. Is that wanted? If so, does the rebuilded packages go in [testing] repo?
Packages that are broken are already broken... I don't even intend to wait for the rebuild to be finished to move gcc to [core].
Just to clarify, rebuilt packages should go in [testing] until gcc is signed off and moved.
And gcc-4.7.1-5 is now in [core]. I did not wait for the rebuild to finish to push this as the situation get no worse in terms of what is broken (in fact with the rebuilds completed already, things get less broken...). And it also stops the situation getting worse with packages being compiled with the old gcc. I think I moved all the relevant rebuilds out of the testing repos at the same time. If I missed anything, move it... Allan
participants (2)
-
Allan McRae
-
Eric Bélanger