DevHeads.net

GCC 8/9 ABI change: call for rebuilds

Recently a serious bug in the compiler was discovered whereby we miscompiled
several packages. The problem only occurs in C++ programs that contain a class
with a trivial move constructor and deleted copy constructor. For such
programs, the calling convention changed inappropriately, in the sense that an
object was passed via memory rather than via registers. See
<https://gcc.gnu.org/PR86094>.

I did a scratch mass rebuild with a specially-tweaked gcc in order to find out
which packages need to be rebuilt. Since the problem occurred in both GCC 8
and GCC 9, we will need to rebuild packages in F28 and F29:

ceph-12.2.4-1.fc29.src.rpm
chromium-67.0.3396.79-1.fc29.src.rpm
firefox-60.0.1-6.fc29.src.rpm
gdb-8.1.50.20180605-18.fc29.src.rpm
insight-8.1.50.20180216-2.fc29.src.rpm
mame-0.198-1.fc29.src.rpm
v8-6.7.17-4.fc29.src.rpm
polymake-3.2r3-1.fc29.src.rpm
pybind11-2.2.2-3.fc29.src.rpm
qt5-qtwebengine-5.10.1-7.fc29.src.rpm
cpprest-2.10.2-2.fc28.src.rpm
waylandpp-0.2.3-1.fc29.src.rpm
webkit2gtk3-2.21.3-1.fc29.src.rpm
webrtc-audio-processing-0.3-7.fc29.src.rpm

The problem is fixed in gcc-8.1.1-2.fc28 and gcc-8.1.1-2.fc29. But it seems
the F28 buildroots still have the unpatched version:

$ koji latest-pkg f28-build gcc
Build Tag Built by
---------------------------------------- -------------------- ----------------
gcc-8.1.1-1.fc28 f28-updates jakub

So perhaps the rebuild in F28 needs to wait a bit.

Marek

Comments

Re: GCC 8/9 ABI change: call for rebuilds

By Adam Williamson at 07/10/2018 - 15:44

On Tue, 2018-07-10 at 15:31 -0400, Marek Polacek wrote:
No update has been submitted for gcc-8.1.1-2.fc28. A buildroot override
was submitted for gcc-8.1.1-4.fc28, but it expired already:

<a href="https://bodhi.fedoraproject.org/overrides/gcc-8.1.1-4.fc28" title="https://bodhi.fedoraproject.org/overrides/gcc-8.1.1-4.fc28">https://bodhi.fedoraproject.org/overrides/gcc-8.1.1-4.fc28</a>

the only ways for a package to get into the buildroot are to be in a
stable update or to have an active buildroot override. So either an
update for GCC needs to be sent out and pushed stable before the
rebuilds are done, or the buildroot override must be renewed and
extended (this could be done, for instance, if we wanted to submit an
update of GCC and the rebuilt packages together, after doing the
rebuilds).