Update to GCC 7

GCC 7 is now released and is available in Debian testing. There are again the usual quirks with new standards versions and older software.

Test rebuilds of Debian testing/unstable on amd64 were done in January 2017 and June 2017, and bug reports filed for the packages. These issues are tracked in http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-gcc-7;users=debian-gcc@lists.debian.org When submitting new reports, please tag these:

Test rebuilds were done in Ubuntu in December 2016 and June 2017, covering other architectures than amd64. See the links at the bottom of the page.

Bug squashing at DebCamp/DebConf

TODO list

Porting help

General porting help https://gcc.gnu.org/gcc-7/porting_to.html

Add pointers to porting efforts of other distributions (e.g. Fedora, OpenSUSE underway)...

Add porting recipes here...

Prepare for GCC 7

GCC 7 name mangling bug fix

In GCC 7, the name mangling for C++ conversion operators which return a type using the abi_tag attribute (most commonly std::string) has changed. When your library is compiled with GCC 7, it will now emit two symbols for the conversion operator using the new and old naming. Executables compiled with GCC 7 will always use the new symbol, while old executables compiled using <= GCC 6 will use the old symbol. For new executables to build without undefined references, your library will need rebuilding with GCC 7.

To ensure that new executables will pull in the newer version of the library built with GCC 7:

If you would like to know the exact name of the new symbols, using "abipkgdiff" from abigail-tools might be able to help.

Bug reports for packages needing this fix are tagged with gcc-7-op-mangling.

Timeline

TBD ...

Further information

Ubuntu test rebuild results (amd64, i386, arm64, armhf, powerpc, ppc64el, s390x):