FROMLIST: arm64: explicitly pass --no-fix-cortex-a53-843419 to GNU gold
authorSami Tolvanen <samitolvanen@google.com>
Wed, 1 Nov 2017 15:42:49 +0000 (08:42 -0700)
committerSami Tolvanen <samitolvanen@google.com>
Thu, 26 Apr 2018 23:03:36 +0000 (16:03 -0700)
Some versions of GNU gold are known to produce broken code with
--fix-cortex-a53-843419 as explained in this bug:

  https://sourceware.org/bugzilla/show_bug.cgi?id=21491

If ARM64_ERRATUM_843419 is disabled and we're using GNU gold, pass
--no-fix-cortex-a53-843419 to the linker to ensure the erratum
fix is not used even if the linker is configured to enable it by
default.

This change also adds a warning if the erratum fix is enabled and
gold version <1.14 is used.

Bug: 62093296
Bug: 67506682
Change-Id: I5669fa920292adc0fd973035f27dafd4a76d919a
(am from https://patchwork.kernel.org/patch/10085777/)
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
arch/arm64/Makefile

index 78df900d75b5177331fc5d47673d05300aea6ef9..519d13a4d92fd9c40936fb93f073ded205c525a4 100644 (file)
@@ -26,8 +26,17 @@ ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
   ifeq ($(call ld-option, --fix-cortex-a53-843419),)
 $(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
   else
+    ifeq ($(call gold-ifversion, -lt, 114000000, y), y)
+$(warning This version of GNU gold may generate incorrect code with --fix-cortex-a53-843419;\
+       see https://sourceware.org/bugzilla/show_bug.cgi?id=21491)
+    endif
 LDFLAGS_vmlinux        += --fix-cortex-a53-843419
   endif
+else
+  ifeq ($(ld-name),gold)
+# Pass --no-fix-cortex-a53-843419 to ensure the erratum fix is disabled
+LDFLAGS        += --no-fix-cortex-a53-843419
+  endif
 endif
 
 KBUILD_DEFCONFIG := defconfig