summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorSean Christopherson <seanjc@google.com>2021-03-23 02:44:38 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-02-23 14:01:00 +0300
commit44b81136e86849117f34a083c359e4860662b3be (patch)
treea3ec70acbe76ff09d2fc3ffc01216020a64ce750 /scripts
parent8b53e5f737bcf64226298c16c3920e7f0807ab94 (diff)
downloadlinux-44b81136e86849117f34a083c359e4860662b3be.tar.xz
kbuild: lto: Merge module sections if and only if CONFIG_LTO_CLANG is enabled
commit 6a3193cdd5e5b96ac65f04ee42555c216da332af upstream. Merge module sections only when using Clang LTO. With ld.bfd, merging sections does not appear to update the symbol tables for the module, e.g. 'readelf -s' shows the value that a symbol would have had, if sections were not merged. ld.lld does not show this problem. The stale symbol table breaks gdb's function disassembler, and presumably other things, e.g. gdb -batch -ex "file arch/x86/kvm/kvm.ko" -ex "disassemble kvm_init" reads the wrong bytes and dumps garbage. Fixes: dd2776222abb ("kbuild: lto: merge module sections") Cc: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Sami Tolvanen <samitolvanen@google.com> Tested-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20210322234438.502582-1-seanjc@google.com Cc: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/module.lds.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/scripts/module.lds.S b/scripts/module.lds.S
index 18d5b8423635..c5f12195817b 100644
--- a/scripts/module.lds.S
+++ b/scripts/module.lds.S
@@ -26,6 +26,7 @@ SECTIONS {
__patchable_function_entries : { *(__patchable_function_entries) }
+#ifdef CONFIG_LTO_CLANG
/*
* With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and
* -ffunction-sections, which increases the size of the final module.
@@ -47,6 +48,7 @@ SECTIONS {
}
.text : { *(.text .text.[0-9a-zA-Z_]*) }
+#endif
}
/* bring in arch-specific sections */