summaryrefslogtreecommitdiffstats
path: root/arch/x86/boot/compressed/vmlinux.lds.S
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2020-08-01 01:07:46 +0200
committerIngo Molnar <mingo@kernel.org>2020-08-14 12:52:34 +0200
commite544ea57ac0734bca752eb2d8635fecbe932c356 (patch)
treef94e41e776f29945c427689e5e2bf003cd6bf5bc /arch/x86/boot/compressed/vmlinux.lds.S
parentx86/boot/compressed: Move .got.plt entries out of the .got section (diff)
downloadlinux-e544ea57ac0734bca752eb2d8635fecbe932c356.tar.xz
linux-e544ea57ac0734bca752eb2d8635fecbe932c356.zip
x86/boot/compressed: Force hidden visibility for all symbol references
Eliminate all GOT entries in the decompressor binary, by forcing hidden visibility for all symbol references, which informs the compiler that such references will be resolved at link time without the need for allocating GOT entries. To ensure that no GOT entries will creep back in, add an assertion to the decompressor linker script that will fire if the .got section has a non-zero size. [Arvind: move hidden.h to include/linux instead of making a copy] Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200731230820.1742553-3-keescook@chromium.org
Diffstat (limited to 'arch/x86/boot/compressed/vmlinux.lds.S')
-rw-r--r--arch/x86/boot/compressed/vmlinux.lds.S1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/boot/compressed/vmlinux.lds.S b/arch/x86/boot/compressed/vmlinux.lds.S
index b17d218ccdf9..4bcc943842ab 100644
--- a/arch/x86/boot/compressed/vmlinux.lds.S
+++ b/arch/x86/boot/compressed/vmlinux.lds.S
@@ -81,6 +81,7 @@ SECTIONS
DISCARDS
}
+ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
#ifdef CONFIG_X86_64
ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
#else