]> git.baikalelectronics.ru Git - kernel.git/commit
kallsyms: strip LTO suffixes from static functions
authorNick Desaulniers <ndesaulniers@google.com>
Mon, 4 Oct 2021 16:29:33 +0000 (09:29 -0700)
committerKees Cook <keescook@chromium.org>
Mon, 4 Oct 2021 17:58:25 +0000 (10:58 -0700)
commit6e14af11cc3750c43be283149b50c32884da54d6
tree54abcc94b0704682424904d819b251f3cf48dda9
parent789c49825f3588ae4782510c2edc22c40036ff73
kallsyms: strip LTO suffixes from static functions

Similar to:
commit 23c5b53640a4 ("kallsyms: strip ThinLTO hashes from static
functions")

It's very common for compilers to modify the symbol name for static
functions as part of optimizing transformations. That makes hooking
static functions (that weren't inlined or DCE'd) with kprobes difficult.

LLVM has yet another name mangling scheme used by thin LTO.

Combine handling of the various schemes by truncating after the first
'.'.  Strip off these suffixes so that we can continue to hook such
static functions.  Clang releases prior to clang-13 would use '$'
instead of '.'

Link: https://reviews.llvm.org/rGc6e5c4654bd5045fe22a1a52779e48e2038a404c
Reported-by: KE.LI(Lieke) <like1@oppo.com>
Suggested-by: Nathan Chancellor <nathan@kernel.org>
Suggested-by: Padmanabha Srinivasaiah <treasure4paddy@gmail.com>
Suggested-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Fangrui Song <maskray@google.com>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20211004162936.21961-1-ndesaulniers@google.com
kernel/kallsyms.c