forked from Minki/linux
kbuild: lto: add a default list of used symbols
With CONFIG_LTO_CLANG, LLVM bitcode has not yet been compiled into a binary when the .mod files are generated, which means they don't yet contain references to certain symbols that will be present in the final binaries. This includes intrinsic functions, such as memcpy, memmove, and memset [1], and stack protector symbols [2]. This change adds a default symbol list to use with CONFIG_TRIM_UNUSED_KSYMS when Clang's LTO is used. [1] https://llvm.org/docs/LangRef.html#standard-c-c-library-intrinsics [2] https://llvm.org/docs/LangRef.html#llvm-stackprotector-intrinsic Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20201211184633.3213045-7-samitolvanen@google.com
This commit is contained in:
parent
dd2776222a
commit
fbe078d397
@ -2297,6 +2297,7 @@ config TRIM_UNUSED_KSYMS
|
|||||||
config UNUSED_KSYMS_WHITELIST
|
config UNUSED_KSYMS_WHITELIST
|
||||||
string "Whitelist of symbols to keep in ksymtab"
|
string "Whitelist of symbols to keep in ksymtab"
|
||||||
depends on TRIM_UNUSED_KSYMS
|
depends on TRIM_UNUSED_KSYMS
|
||||||
|
default "scripts/lto-used-symbollist.txt" if LTO_CLANG
|
||||||
help
|
help
|
||||||
By default, all unused exported symbols will be un-exported from the
|
By default, all unused exported symbols will be un-exported from the
|
||||||
build when TRIM_UNUSED_KSYMS is selected.
|
build when TRIM_UNUSED_KSYMS is selected.
|
||||||
|
5
scripts/lto-used-symbollist.txt
Normal file
5
scripts/lto-used-symbollist.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
memcpy
|
||||||
|
memmove
|
||||||
|
memset
|
||||||
|
__stack_chk_fail
|
||||||
|
__stack_chk_guard
|
Loading…
Reference in New Issue
Block a user