--- /dev/null
+From f634ca650f724347892068489c7920631a3aac6a Mon Sep 17 00:00:00 2001
+From: Nathan Chancellor <nathan@kernel.org>
+Date: Thu, 22 Apr 2021 13:19:14 -0700
+Subject: kbuild: Add $(KBUILD_HOSTLDFLAGS) to 'has_libelf' test
+
+From: Nathan Chancellor <nathan@kernel.org>
+
+commit f634ca650f724347892068489c7920631a3aac6a upstream.
+
+Normally, invocations of $(HOSTCC) include $(KBUILD_HOSTLDFLAGS), which
+in turn includes $(HOSTLDFLAGS), which allows users to pass in their own
+flags when linking. However, the 'has_libelf' test does not, meaning
+that if a user requests a specific linker via HOSTLDFLAGS=-fuse-ld=...,
+it is not respected and the build might error.
+
+For example, if a user building with clang wants to use all of the LLVM
+tools without any GNU tools, they might remove all of the GNU tools from
+their system or PATH then build with
+
+$ make HOSTLDFLAGS=-fuse-ld=lld LLVM=1 LLVM_IAS=1
+
+which says use all of the LLVM tools, the integrated assembler, and
+ld.lld for linking host executables. Without this change, the build will
+error because $(HOSTCC) uses its default linker, rather than the one
+requested via -fuse-ld=..., which is GNU ld in clang's case in a default
+configuration.
+
+error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please
+install libelf-dev, libelf-devel or elfutils-libelf-devel
+make[1]: *** [Makefile:1260: prepare-objtool] Error 1
+
+Add $(KBUILD_HOSTLDFLAGS) to the 'has_libelf' test so that the linker
+choice is respected.
+
+Link: https://github.com/ClangBuiltLinux/linux/issues/479
+Signed-off-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Cc: Paul Barker <paul.barker@sancloud.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -1073,7 +1073,7 @@ export mod_sign_cmd
+ HOST_LIBELF_LIBS = $(shell pkg-config libelf --libs 2>/dev/null || echo -lelf)
+
+ has_libelf = $(call try-run,\
+- echo "int main() {}" | $(HOSTCC) -xc -o /dev/null $(HOST_LIBELF_LIBS) -,1,0)
++ echo "int main() {}" | $(HOSTCC) $(KBUILD_HOSTLDFLAGS) -xc -o /dev/null $(HOST_LIBELF_LIBS) -,1,0)
+
+ ifdef CONFIG_STACK_VALIDATION
+ ifeq ($(has_libelf),1)