kernel_optimize_test/tools/objtool
Josh Poimboeuf a63068e939 static_call: Allow module use without exposing static_call_key
[ Upstream commit 73f44fe19d359635a607e8e8daa0da4001c1cfc2 ]

When exporting static_call_key; with EXPORT_STATIC_CALL*(), the module
can use static_call_update() to change the function called.  This is
not desirable in general.

Not exporting static_call_key however also disallows usage of
static_call(), since objtool needs the key to construct the
static_call_site.

Solve this by allowing objtool to create the static_call_site using
the trampoline address when it builds a module and cannot find the
static_call_key symbol. The module loader will then try and map the
trampole back to a key before it constructs the normal sites list.

Doing this requires a trampoline -> key associsation, so add another
magic section that keeps those.

Originally-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20210127231837.ifddpn7rhwdaepiu@treble
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-03-30 14:31:53 +02:00
..
arch/x86 objtool: Fix retpoline detection in asm code 2021-03-04 11:38:00 +01:00
Documentation objtool: Add support for intra-function calls 2020-04-30 20:14:33 +02:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
arch.h objtool: Decode unwind hint register depending on architecture 2020-09-10 10:43:13 -05:00
Build objtool: Enable compilation of objtool for all architectures 2020-05-20 09:17:28 -05:00
builtin-check.c objtool: Move ORC logic out of check() 2020-09-01 17:19:11 -05:00
builtin-orc.c objtool: Move ORC logic out of check() 2020-09-01 17:19:11 -05:00
builtin.h objtool: Implement noinstr validation 2020-04-22 10:53:50 +02:00
cfi.h objtool: Fix !CFI insn_state propagation 2020-04-22 10:53:50 +02:00
check.c static_call: Allow module use without exposing static_call_key 2021-03-30 14:31:53 +02:00
check.h objtool: Fix retpoline detection in asm code 2021-03-04 11:38:00 +01:00
elf.c objtool: Fix seg fault with Clang non-section symbols 2021-02-17 11:02:20 +01:00
elf.h objtool: Fix seg fault with Clang non-section symbols 2021-02-17 11:02:20 +01:00
Makefile tools: Factor HOSTCC, HOSTLD, HOSTAR definitions 2021-01-30 13:55:19 +01:00
objtool.c objtool: Move object file loading out of check() 2020-09-01 17:19:07 -05:00
objtool.h objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00
orc_dump.c objtool: Make unwind hint definitions available to other architectures 2020-09-10 10:43:13 -05:00
orc_gen.c objtool: Fix seg fault with Clang non-section symbols 2021-02-17 11:02:20 +01:00
special.c objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00
special.h objtool: Refactor jump table code to support other architectures 2020-09-10 10:43:13 -05:00
sync-check.sh objtool: Make unwind hint definitions available to other architectures 2020-09-10 10:43:13 -05:00
warn.h objtool: Rename find_containing_func() 2020-03-25 18:28:29 +01:00
weak.c objtool: Abstract alternative special case handling 2020-09-10 10:43:13 -05:00