Commit fbe078d3 authored by Sami Tolvanen's avatar Sami Tolvanen Committed by Kees Cook
Browse files

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: default avatarSami Tolvanen <samitolvanen@google.com>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20201211184633.3213045-7-samitolvanen@google.com
parent dd277622
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2297,6 +2297,7 @@ config TRIM_UNUSED_KSYMS
config UNUSED_KSYMS_WHITELIST
	string "Whitelist of symbols to keep in ksymtab"
	depends on TRIM_UNUSED_KSYMS
	default "scripts/lto-used-symbollist.txt" if LTO_CLANG
	help
	  By default, all unused exported symbols will be un-exported from the
	  build when TRIM_UNUSED_KSYMS is selected.
+5 −0
Original line number Diff line number Diff line
memcpy
memmove
memset
__stack_chk_fail
__stack_chk_guard