It's been a tradition now that every January we rebuild all the Fedora packages
with the upcoming GCC, to reveal as many bugs as possible before we release
the new version.  This year is no different.

There were 18811 packages overall (last year we had 17741 packages).
17263 built fine with the new GCC (mostly gcc-7.0.0-0.1.fc26.src.rpm but I also
used a newer version from rawhide).  1350 failed with both GCC 6 and GCC 7,
so I ignored these.  This left us with ~198 packages that had to be analyzed,
a number which, fortunately, was smaller than last year, when we'd had 577 
FTBFS to
investigate.

The Fedora packages I rebuilt were grabbed on Jan 12.

It's all fairly good, and nothing particularly stands out.  There is the usual
batch of new warnings (-Wimplicit-fallthrough and -Wformat-truncation causing
the biggest churn), some C++ FE changes (especially the "Fix type-dependence
and the current instantiation" changes made the compiler to reject invalid code
that had previously been accepted, plus invalid conversions with '\0' are now
rejected), some libstdc++ changes (header dependency changes), as well as some
mangling changes.

We found several GCC bugs, most of which have already been fixed.  Furthermore,
Fortran ABI has changed in GCC 7.  Anyway, there's nothing that particularly
worries me (except perhaps the -fprintf-return-value stuff that might still
cause some wrong codes).

Shortlog appended for the people who want to get an overview of the details.

As usual, there will be a "porting to" document to ease the transition to the
new GCC.  We already have https://gcc.gnu.org/gcc-7/porting_to.html, even though
this document is still somewhat in flux.

I'd like to thank Jakub Jelinek and Jonathan Wakely, the guys I roped in to help
me with all this undertaking.

GCC bugs
~~~~~~~~
The following is a list of bugs we've found so far in the compiler and the C++
library during the mass rebuild:

schroot-1.6.5-16.fc24.src.rpm
        ICE in cxx_incomplete_type_diagnostic
        https://gcc.gnu.org/PR78690
        not fixed yet

python-plyvel-0.9-7.fc26.src.rpm
        error: invalid rhs for gimple memory store
        https://gcc.gnu.org/PR79232
        fixed in gcc-7.0.1-0.4.fc26

mathicgb-1.0-6.20160202.gitbb268df.fc26.src.rpm
        ICE in tsubst_copy
        https://gcc.gnu.org/PR79253
        fixed upstream and in gcc-7.0.1-0.5.fc26

cvc4-1.4-11.fc25.src.rpm
        TLS model wrong for static data members
        https://gcc.gnu.org/PR79288
        fixed in gcc-7.0.1-0.4.fc26

golang-1.7.4-1.fc26.src.rpm
        DWARF info for typeof of C function with no args and no prototype
        is empty pointer
        https://gcc.gnu.org/PR79289
        fixed upstream and in gcc-7.0.1-0.4.fc26

texlive-2016-30.20160520.fc26.src.rpm
tlog-2-1.fc25.src.rpm
        wrong code at -O2 and -fprintf-return-value
        https://gcc.gnu.org/PR79327
        fixed upstream and in gcc-7.0.1-0.6.fc26

perl-Prima-1.50-1.fc26.src.rpm
        -fprintf-return-value doesn't handle flexible-like array members 
properly
        https://gcc.gnu.org/PR79352
        fixed upstream and in gcc-7.0.1-0.6.fc26

clucene09-0.9.21b-16.fc24.src.rpm
qt5-qttools-5.7.1-4.fc26.src.rpm
        g++ rejects valid code with error: looser throw specifier
        https://gcc.gnu.org/PR79393     

Failures due to new warnings and -Werror
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
efivar-30-4.fc26.src.rpm
        a new -Walloc-size-larger-than warning

bind-dyndb-ldap-11.0-1.fc26.src.rpm
efibootmgr-14-3.fc26.src.rpm
fwupdate-8-2.fc26.src.rpm
        a new -Wduplicate-decl-specifier warning

mstflint-4.4.0-1.12.gd1edd58.1.fc26.src.rpm
        a new -Wformat-length warning

blobwars-1.19-13.fc24.src.rpm
czmq-4.0.2-1.fc26.src.rpm
elfutils-0.168-1.fc26.src.rpm
fcoe-utils-1.0.30-5.git91c0c8c.fc24.src.rpm
glib2-2.51.0-2.fc26.src.rpm
glibc-2.24.90-26.fc26.src.rpm
ipv6calc-0.99.2-17.fc26.src.rpm
isomd5sum-1.1.0-4.fc26.src.rpm
ixpdimm_sw-01.00.00.2144-1.fc26.src.rpm
libhid-0.2.17-21.fc25.src.rpm
libpsm2-10.2.2-2.fc25.src.rpm
libyui-3.2.8-1.fc26.src.rpm
logrotate-3.11.0-2.fc26.src.rpm
memcached-1.4.33-1.fc26.src.rpm
nfs-ganesha-2.4.1-2.fc26.src.rpm
nodm-0.12-1.fc25.src.rpm
openvas-libraries-8.0.8-2.fc26.src.rpm
pacemaker-1.1.16-1.fc26.src.rpm
sbd-1.2.1-3.fc24.1.src.rpm
Simple-Fuzzer-0.7.1-1.src.rpm
usbip-4.5-1.fc25.src.rpm
varnish-5.0.0-1.fc26.src.rpm
vsftpd-3.0.3-4.fc26.src.rpm
xrootd-4.5.0-1.fc26.src.rpm
        a new -Wformat-truncation

ArpON-3.0-2.fc25.src.rpm
clevis-2-1.fc26.src.rpm
coreboot-utils-4.5-2.fc26.src.rpm
crash-7.1.7-1.fc26.src.rpm
gmqcc-0.3.5-10.fc26.src.rpm
hidrd-0.2.0-3.20160712git1abf7033.fc25.src.rpm
libs3-2.0-0.5.20161104gita052a00.fc26.src.rpm
libvma-8.0.1-1.fc25.src.rpm
lldpad-1.0.1-4.git036e314.fc24.src.rpm
luksmeta-3-1.fc26.src.rpm
mdadm-3.4-3.fc26.src.rpm
mingw-w64-tools-3.1.999-0.8.trunk.git430863.20140530.fc24.src.rpm
msgpack-1.4.1-1.fc25.src.rpm
percona-xtrabackup-2.2.9-4.fc24.src.rpm
pesign-0.112-5.fc26.src.rpm
pidgin-sipe-1.21.1-1.fc25.src.rpm
qpid-cpp-1.35.0-1.fc26.src.rpm
qpid-qmf-1.35.0-1.fc26.src.rpm
quassel-irssi-0-2.20161120gitcbd9bd7.fc26.src.rpm
sway-0.11-4.fc26.src.rpm
        a new -Wimplicit-fallthrough warning

cdrkit-1.1.11-32.fc26.src.rpm
        a new -Wint-in-bool-contex warning

Invalid C++
~~~~~~~~~~~~~~~~~~~~~~
Add64-1.2.2-10.fc24.src.rpm
berusky2-0.10-11.fc24.src.rpm
easystroke-0.6.0-15.fc24.src.rpm
guitarix-0.35.0-3.fc26.src.rpm
inkscape-0.92.0-11.fc26.src.rpm
jack-audio-connection-kit-1.9.10-5.fc24.src.rpm
kate4-4.14.3-16.fc24.src.rpm
milkytracker-0.90.86-3.fc25.src.rpm
muse-2.2.1-2.fc24.src.rpm
rawtherapee-4.2.1234-2.20161105gitb766110.fc26.src.rpm
svxlink-15.11-1.fc24.src.rpm
vdr-2.2.0-10.fc25.src.rpm
        error: call of overloaded 'abs(...)' is ambiguous
        All overloads of the abs function are now declared by including either
        of <cstdlib> or <cmath>, and the custom overloads conflict with one of
        the additional overloads in the standard headers.  Additionally,
        calling abs with an argument of unsigned type is now ill-formed after
        inclusion of any standard abs overload. 

capnproto-0.5.3-2.fc25.src.rpm
        error: could not convert template argument 'b' from 'bool' to 
'capnp::Kind'
        Presumably invalid C++.

atlascpp-0.6.3-6.fc24.src.rpm
glmark2-2014.03-6.fc25.src.rpm
ladish-2-13.3.gitfcb16ae.fc24.src.rpm
libinvm-cim-1.0.0.1043-1.fc26.src.rpm
libvoikko-3.8-2.fc25.src.rpm
openoffice.org-diafilter-1.7.5-1.fc24.src.rpm
pulseview-0.3.0-1.fc24.src.rpm
        error: dynamic exception specifications are deprecated in C++11; use 
'noexcept' instead
        In C++17, throw(int) is no longer valid.

asgp-1.0.18-6.fc26.src.rpm
bear-0.7.0-0.11.20161230git781ec80.fc26.src.rpm
crawl-0.19.1-1.fc26.src.rpm
libclaw-1.7.4-16.fc26.src.rpm
plee-the-bear-0.7.0-10.fc26.src.rpm
steghide-0.5.1-28.fc26.src.rpm
        error: expected primary-expression before ... token
        Invalid C++ code; it needs to be "position.template cast_value_type_to".
        See https://womble.decadent.org.uk/c++/template-faq.html#disambiguation.

normaliz-2.12.2-8.fc24.src.rpm
        error: expression cannot be used as a function
        Invalid C++, Jon opened:
        https://bugzilla.redhat.com/show_bug.cgi?id=1417678     

apt-cacher-ng-0.9.0-1.fc24.src.rpm
clementine-1.3.1-4.fc26.src.rpm
conky-1.10.4-1.fc26.src.rpm
dwgrep-0.2-4.fc24.src.rpm
fflas-ffpack-2.2.2-3.fc26.src.rpm
glogg-1.1.2-1.fc26.src.rpm
gpgme-1.8.0-7.fc26.src.rpm
gtengine-3.5-1.fc26.src.rpm
lldb-3.9.0-3.fc26.src.rpm
pingus-0.7.6-20.fc24.src.rpm
plasma-desktop-5.8.5-2.fc26.src.rpm
worker-3.3.3-6.fc24.src.rpm
        Quoting from porting_to:
        Several C++ Standard Library headers have been changed to no longer
        include the <functional> header. As such, C++ programs that used 
components
        defined in <functional> without explicitly including that header will no
        longer compile.

        Previously components such as std::bind and std::function were 
implicitly
        defined after including unrelated headers such as <memory>, <futex>, 
<mutex>,
        and <regex>. Correct code should #include <functional> to define them. 

        Also see https://bugzilla.redhat.com/show_bug.cgi?id=1417383
        
bison-3.0.4-4.fc24.src.rpm
        This package contains code that is trying to add some classes to std::,
        that is undefined behavior.

Coin2-2.5.0-28.fc26.src.rpm
Coin3-3.1.3-18.fc26.src.rpm
dbus-c++-0.9.0-11.fc24.src.rpm
festival-1.96-32.fc24.src.rpm
gambas3-3.9.2-2.fc26.src.rpm
htdig-3.2.0-0.25.b6.fc24.src.rpm
kyotocabinet-1.2.76-11.fc26.src.rpm
mup-6.5-1.fc26.src.rpm
percolator-3.01-1.fc26.src.rpm
pki-core-10.3.5-10.fc26.src.rpm
scim-1.4.17-1.fc25.src.rpm
scim-bridge-0.4.16-22.fc24.src.rpm
speed-dreams-2.2.1-2.fc26.src.rpm
torcs-1.3.7-1.fc25.src.rpm
        error: invalid conversion from 'char' to 'char*'
        s = '\0'
        This code is invalid in C++11 and GCC doesn't compile it anymore 
(pointer
        conversions are only allowed for an integral-literal and not a character
        literal).  In C++03 and in C the compiler warns (-Wpointer-compare).

vegastrike-0.5.1-27.r1.fc24.src.rpm
        error: request for member ... in ...
        Looks like '.' is used instead of '->', so invalid C++.

apvlv-0.1.4-11.fc25.src.rpm
arm-none-eabi-gcc-cs-6.2.0-1.fc26.src.rpm
aspell-0.60.6.1-14.fc26.src.rpm
avr-gcc-6.2.0-1.fc26.src.rpm
dyninst-9.3.0-1.fc26.src.rpm
edk2-20161105git3b25ca8-1.fc26.src.rpm
frysk-0.4-54.fc26.src.rpm
gearmand-1.1.14-1.fc26.src.rpm
glog-0.3.3-12.fc25.src.rpm
gpsim-0.29.0-1.fc24.src.rpm
hylafax+-5.5.8-1.fc24.src.rpm
kdelibs-4.14.28-1.fc26.src.rpm
libmemcached-1.0.18-7.fc24.src.rpm
libmp4v2-2.1.0-0.6.trunkREV507.fc24.src.rpm
mingw-gcc-6.3.0-1.fc26.src.rpm
mozjs17-17.0.0-16.fc26.src.rpm
mozjs24-24.2.0-11.fc26.src.rpm
ode-0.14-2.fc24.src.rpm
oorexx-4.2.0-3.fc26.src.rpm
primer3-2.3.6-6.fc24.src.rpm
shigofumi-0.6-4.fc25.src.rpm
snoopy-2.2.6-3.fc24.src.rpm
vdr-live-0.3.0-24.20150213git6ea279a.fc26.src.rpm
xmoto-0.5.11-9.fc24.src.rpm
        error: ISO C++ forbids comparison between pointer and integer
        You can no longer write "ptr == '\0'" as it's invalid C++11.

atanks-6.5-1.fc26.src.rpm
blitz-0.10-10.fc24.src.rpm
nodejs-6.9.4-1.fc26.src.rpm
OpenEXR-2.2.0-6.fc26.src.rpm
qt5-qtbase-5.7.1-12.fc26.src.rpm
qt5-qtwebengine-5.7.1-4.fc26.src.rpm
v8-314-3.14.5.10-3.fc25.src.rpm
z3-4.5.0-1.fc26.src.rpm
        error: invalid use of incomplete type
        This code is ill-formed and G++ now rejects such code.

k3d-0.8.0.6-2.fc26.src.rpm
        error: no match for 'operator<<' (operand types are 'std::ostream
        {aka std::basic_ostream<char>}' and 'const double')
        Missing <ostream>.

codeblocks-16.01-2.fc26.src.rpm
cyphesis-0.6.2-9.fc24.src.rpm
        there are no arguments to .. that depend on a template parameter,
        so a declaration of ... must be available
        This code is ill-formed and G++ now rejects such code.

ETL-0.04.22-1.fc26.src.rpm
libffado-2.3.0-1.fc26.src.rpm
meshlab-1.3.2-10.fc25.src.rpm
sflphone-1.4.1-20.fc26.src.rpm
        error: no matching function for call to ...
        Invalid code.

mongo-cxx-driver-1.1.2-3.fc26.src.rpm
        Unknown failure.  Fails in a shim test, so perhaps some
        libstdc++ changes?

gmm-5.0-1.fc24.src.rpm
        Package exceeded -ftemplate-depth limit.

cppcheck-1.75-1.fc26.src.rpm
pdns-4.0.1-3.fc26.src.rpm
pdns-recursor-4.0.3-2.fc26.src.rpm
        error: types may not be defined in a for-range-declaration
        Invalid code: "The decl-specifier-seq shall not define a
        class or enumeration."
        (This used to be a warning.)

openigtlink-0-0.2.20151015gitccb2438.fc24.src.rpm
        error: 'void*' is not a pointer-to-object type
        Invalid code.

Other
~~~~~
ruby-2.3.3-61.fc26.src.rpm
        This was a GC bug in Ruby; fixed.
        https://bugzilla.redhat.com/show_bug.cgi?id=1417590

florist-2011-19.fc24.src.rpm
matreshka-0.7.0-5.fc24.src.rpm
        Error: no native compiler found for language 'ada', default runtime
        This is gcc-gnat related.  Didn't investigate further.

cryptlib-3.4.3-8.fc26.src.rpm
cryptobone-1.1.1-2.fc26.src.rpm
        error: CPU you selected does not support x86-64 instruction set
        -mcpu=pentium in the options list.

diffutils-3.5-1.fc26.src.rpm
        A bug in the package.  I opened a BZ with a patch:
        https://bugzilla.redhat.com/show_bug.cgi?id=1419536

libbson-1.5.1-1.fc26.src.rpm
        -fwrapv helped, so I bet this is a bug in the package.  I suggest
        to use -fsanitize=undefined to see where the overflow happens.

libosmocore-0.9.0-4.2015110~t916423ef.fc24.src.rpm
        -fgnu89-inline helped.  See what I wrote in
        https://gcc.gnu.org/gcc-5/porting_to.html

ecl-16.1.2-1.fc26.src.rpm
        This failed because there was an insanely huge struct and the new
        diagnostics (fix-it hints) was trying to print it all.  I killed
        the build.

coin-or-Dip-0.91.2-6.fc25.src.rpm
R-DynDoc-1.52.0-1.fc26.src.rpm
R-pls-2.4.3-5.fc24.src.rpm
        Missing libgfortran 7.

bastet-0.43.1-11.fc24.src.rpm
ocaml-cil-1.7.3-27.fc26.src.rpm
ocp-0.1.22-0.10.git849cc42.fc26.src.rpm
openms-2.1.0-3.fc26.src.rpm
openttd-1.6.1-2.fc26.src.rpm
        These are not ready for a new gcc version (gcc -dumpversion says '7'
        and not e.g. '6.3.1') and the packages fail to cope with that.

perl-HTTP-Proxy-0.304-3.fc25.src.rpm
perl-OpenGL-0.6704-5.fc25.src.rpm
        Two Perl failures that I wasn't able to analyze, but since they
        don't use gcc at all, I presume it's not gcc's fault.

vavoom-1.33-19.fc26.src.rpm
        For some unknown reason a piece of a Makefile isn't performed,
        resulting in a failure.

arc-gui-clients-0.4.6-9.fc25.src.rpm
archimedes-2.0.1-5.fc24.src.rpm
audacity-2.1.3-0.7.20161109git53a5c93.fc26.src.rpm
bwm-ng-0.6.1-2.fc24.src.rpm
ember-0.7.2-15.fc25.src.rpm
extremetuxracer-0.7.4-1.fc26.src.rpm
funguloids-1.06-18.fc24.src.rpm
glite-lbjp-common-gsoap-plugin-3.2.12-10.fc26.src.rpm
gnokii-0.6.31-14.fc24.src.rpm
gobby-0.4.13-10.fc24.src.rpm
linbox-1.4.2-5.fc26.src.rpm
marsshooter-0.7.6-2.fc26.src.rpm
mgetty-1.1.37-1.fc26.src.rpm
mkvtoolnix-9.6.0-1.fc26.src.rpm
openalchemist-0.4-19.fc24.src.rpm
powerline-2.5-4.fc26.src.rpm
sobby-0.4.7-12.fc24.src.rpm
tunneler-1.1.1-17.fc24.src.rpm
        Undefined references.  Some of them might be due to C99/GNU89 inline
        semantics, but some of them are result of the mangling changes, see
        porting_to.html.

pspp-0.10.2-1.fc26.src.rpm
        A bug in the package, see
        https://bugzilla.redhat.com/show_bug.cgi?id=1419174

        Marek
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org

Reply via email to