On Fri, Jun 28, 2019 at 09:42:21AM -0700, Nick Desaulniers wrote:
On Fri, Jun 28, 2019 at 8:53 AM Tony Battersby <tonyb@xxxxxxxxxxxxxxx> wrote:
Old versions of gcc cannot compile 4.14 since 4.14.113:
./include/asm-generic/fixmap.h:37: error: implicit declaration of function ‘__builtin_unreachable’
The stable commit that caused the problem is 82017e26e515 ("compiler.h:
update definition of unreachable()") (upstream commit fe0640eb30b7).
Reverting the commit fixes the problem.
Kernel 4.17 dropped support for older versions of gcc in upstream commit
cafa0010cd51 ("Raise the minimum required gcc version to 4.6"). This
was not backported to 4.14 since that would go against the stable kernel
rules.
Upstream commit 815f0ddb346c ("include/linux/compiler*.h: make
compiler-*.h mutually exclusive") was a fix for cafa0010cd51. This was
not backported to 4.14.
Upstream commit fe0640eb30b7 ("compiler.h: update definition of
unreachable()") was a fix for 815f0ddb346c. This is the commit that was
backported to 4.14. But it only fixed a problem introduced in the other
commits, and without those commits, it ends up introducing a problem
instead of fixing one. So I recommend reverting that patch in 4.14,
which will enable old gcc to compile 4.14 again. If I understand
correctly, I believe that clang will still be able to compile 4.14 with
the patch reverted, although I haven't tried to compile with clang.
The problematic commit is not present in 4.9.x, 4.4.x, 3.18.x, or 3.16.x.
$ make CC=clang -j71 arch/x86/mm/fault.o
produces no objtool warning with upstream commit fe0640eb30b7 reverted.
x86 defconfig w/ Clang also have no issue with that reverted on 4.14.y.
Revert away.
Greg, Sasha,
Do you need a patch file for that, or can you please push a
$ cd linux-stable
$ git checkout 4.14.y
$ git revert 82017e26e51596ee577171a33f357377ec6513b5
You got it.
--
Thanks,
~Nick Desaulniers