Bug reports:
The move to gcc-7 (and further) on Linux can cause issues if there is a mismatch between this and the host CPU and system binutils versions. This is caused by Homebrew using -march=native for from-source builds on a Host CPU that supports ISAs the system binutils cannot assemble. With that flag, GCC will generate assembly that the used (system) binutils cannot assemble, causing "no such instruction set" errors.
For supported platforms, we have:
- CentOS6: binutils 2.20.51
- CentOS7: binutils: 2.27-34
- Ubuntu 16.04LTS: binutils 2.26.1
- Ubuntu 18.04LTS: binutils 2.30
So this is mostly going to affect CentOS 6 systems in the short term. We'll need to keep track of GCC vs Binutils recommendations, plus the minimum CPU features we can expect. We should probably recommend the use of HOMEBREW_CORE=core2 for now brew install binutils --cc=gcc-7 --env=std, and update this as and when we can mostly guarantee more modern chips and systems with sufficient binutils.
This will also affect Docker containers as those will need to be built on a host with a CPU supporting only the oldest set of features we want to support.
Note that the use of HOMEBREW_ARCH is no longer supported, so we need to build with the std env, or build a bottle at the same time (as bottles are built with core2 arch).
Bug reports:
The move to gcc-7 (and further) on Linux can cause issues if there is a mismatch between this and the host CPU and system
binutilsversions. This is caused by Homebrew using-march=nativefor from-source builds on a Host CPU that supports ISAs the system binutils cannot assemble. With that flag, GCC will generate assembly that the used (system) binutils cannot assemble, causing "no such instruction set" errors.For supported platforms, we have:
So this is mostly going to affect CentOS 6 systems in the short term. We'll need to keep track of GCC vs Binutils recommendations, plus the minimum CPU features we can expect. We should probably recommend
the use ofHOMEBREW_CORE=core2for nowbrew install binutils --cc=gcc-7 --env=std, and update this as and when we can mostly guarantee more modern chips and systems with sufficient binutils.This will also affect Docker containers as those will need to be built on a host with a CPU supporting only the oldest set of features we want to support.
Note that the use of
HOMEBREW_ARCHis no longer supported, so we need to build with the std env, or build a bottle at the same time (as bottles are built with core2 arch).