--- /dev/null
+From 2a0098d70640dda192a79966c14d449e7a34d675 Mon Sep 17 00:00:00 2001
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+Date: Mon, 15 Jan 2018 08:17:07 -0600
+Subject: objtool: Fix seg fault with gold linker
+
+From: Josh Poimboeuf <jpoimboe@redhat.com>
+
+commit 2a0098d70640dda192a79966c14d449e7a34d675 upstream.
+
+Objtool segfaults when the gold linker is used with
+CONFIG_MODVERSIONS=y and CONFIG_UNWINDER_ORC=y.
+
+With CONFIG_MODVERSIONS=y, the .o file gets passed to the linker before
+being passed to objtool. The gold linker seems to strip unused ELF
+symbols by default, which confuses objtool and causes the seg fault when
+it's trying to generate ORC metadata.
+
+Objtool should really be running immediately after GCC anyway, without a
+linker call in between. Change the makefile ordering so that objtool is
+called before the linker.
+
+Reported-and-tested-by: Markus <M4rkusXXL@web.de>
+Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Fixes: ee9f8fce9964 ("x86/unwind: Add the ORC unwinder")
+Link: http://lkml.kernel.org/r/355f04da33581f4a3bf82e5b512973624a1e23a2.1516025651.git.jpoimboe@redhat.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ scripts/Makefile.build | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+--- a/scripts/Makefile.build
++++ b/scripts/Makefile.build
+@@ -270,12 +270,18 @@ else
+ objtool_args += $(call cc-ifversion, -lt, 0405, --no-unreachable)
+ endif
+
++ifdef CONFIG_MODVERSIONS
++objtool_o = $(@D)/.tmp_$(@F)
++else
++objtool_o = $(@)
++endif
++
+ # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory
+ # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
+ # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file
+ cmd_objtool = $(if $(patsubst y%,, \
+ $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
+- $(__objtool_obj) $(objtool_args) "$(@)";)
++ $(__objtool_obj) $(objtool_args) "$(objtool_o)";)
+ objtool_obj = $(if $(patsubst y%,, \
+ $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \
+ $(__objtool_obj))
+@@ -291,15 +297,15 @@ objtool_dep = $(objtool_obj) \
+ define rule_cc_o_c
+ $(call echo-cmd,checksrc) $(cmd_checksrc) \
+ $(call cmd_and_fixdep,cc_o_c) \
+- $(cmd_modversions_c) \
+ $(call echo-cmd,objtool) $(cmd_objtool) \
++ $(cmd_modversions_c) \
+ $(call echo-cmd,record_mcount) $(cmd_record_mcount)
+ endef
+
+ define rule_as_o_S
+ $(call cmd_and_fixdep,as_o_S) \
+- $(cmd_modversions_S) \
+- $(call echo-cmd,objtool) $(cmd_objtool)
++ $(call echo-cmd,objtool) $(cmd_objtool) \
++ $(cmd_modversions_S)
+ endef
+
+ # List module undefined symbols (or empty line if not enabled)