| From 47f71772e5da92083213a43edc835f226b16904f Mon Sep 17 00:00:00 2001 |
| From: Kees Cook <keescook@chromium.org> |
| Date: Thu, 4 Apr 2019 14:40:27 -0700 |
| Subject: x86/build: Keep local relocations with ld.lld |
| |
| [ Upstream commit 7c21383f3429dd70da39c0c7f1efa12377a47ab6 ] |
| |
| The LLVM linker (ld.lld) defaults to removing local relocations, which |
| causes KASLR boot failures. ld.bfd and ld.gold already handle this |
| correctly. This adds the explicit instruction "--discard-none" during |
| the link phase. There is no change in output for ld.bfd and ld.gold, |
| but ld.lld now produces an image with all the needed relocations. |
| |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| Cc: "H. Peter Anvin" <hpa@zytor.com> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Nick Desaulniers <ndesaulniers@google.com> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Cc: clang-built-linux@googlegroups.com |
| Cc: x86-ml <x86@kernel.org> |
| Link: https://lkml.kernel.org/r/20190404214027.GA7324@beast |
| Link: https://github.com/ClangBuiltLinux/linux/issues/404 |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/x86/Makefile | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/x86/Makefile b/arch/x86/Makefile |
| index a587805c6687f..56e748a7679f4 100644 |
| --- a/arch/x86/Makefile |
| +++ b/arch/x86/Makefile |
| @@ -47,7 +47,7 @@ export REALMODE_CFLAGS |
| export BITS |
| |
| ifdef CONFIG_X86_NEED_RELOCS |
| - LDFLAGS_vmlinux := --emit-relocs |
| + LDFLAGS_vmlinux := --emit-relocs --discard-none |
| endif |
| |
| # |
| -- |
| 2.20.1 |
| |