mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
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 |
||
|---|---|---|
| .. | ||
| arch/x86 | ||
| Documentation | ||
| .gitignore | ||
| arch.h | ||
| Build | ||
| builtin-check.c | ||
| builtin-orc.c | ||
| builtin.h | ||
| cfi.h | ||
| check.c | ||
| check.h | ||
| elf.c | ||
| elf.h | ||
| Makefile | ||
| objtool.c | ||
| objtool.h | ||
| orc_dump.c | ||
| orc_gen.c | ||
| special.c | ||
| special.h | ||
| sync-check.sh | ||
| warn.h | ||
| weak.c | ||