Commit 9440155c authored by Peter Zijlstra (Intel)'s avatar Peter Zijlstra (Intel) Committed by Daniel Borkmann

ftrace: Add HAVE_DYNAMIC_FTRACE_NO_PATCHABLE

x86 will shortly start using -fpatchable-function-entry for purposes
other than ftrace, make sure the __patchable_function_entry section
isn't merged in the mcount_loc section.
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20220903131154.420467-2-jolsa@kernel.org
parent bfeb7e39
...@@ -154,6 +154,14 @@ ...@@ -154,6 +154,14 @@
#define MEM_DISCARD(sec) *(.mem##sec) #define MEM_DISCARD(sec) *(.mem##sec)
#endif #endif
#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
#define KEEP_PATCHABLE KEEP(*(__patchable_function_entries))
#define PATCHABLE_DISCARDS
#else
#define KEEP_PATCHABLE
#define PATCHABLE_DISCARDS *(__patchable_function_entries)
#endif
#ifdef CONFIG_FTRACE_MCOUNT_RECORD #ifdef CONFIG_FTRACE_MCOUNT_RECORD
/* /*
* The ftrace call sites are logged to a section whose name depends on the * The ftrace call sites are logged to a section whose name depends on the
...@@ -172,7 +180,7 @@ ...@@ -172,7 +180,7 @@
#define MCOUNT_REC() . = ALIGN(8); \ #define MCOUNT_REC() . = ALIGN(8); \
__start_mcount_loc = .; \ __start_mcount_loc = .; \
KEEP(*(__mcount_loc)) \ KEEP(*(__mcount_loc)) \
KEEP(*(__patchable_function_entries)) \ KEEP_PATCHABLE \
__stop_mcount_loc = .; \ __stop_mcount_loc = .; \
ftrace_stub_graph = ftrace_stub; \ ftrace_stub_graph = ftrace_stub; \
ftrace_ops_list_func = arch_ftrace_ops_list_func; ftrace_ops_list_func = arch_ftrace_ops_list_func;
...@@ -1024,6 +1032,7 @@ ...@@ -1024,6 +1032,7 @@
#define COMMON_DISCARDS \ #define COMMON_DISCARDS \
SANITIZER_DISCARDS \ SANITIZER_DISCARDS \
PATCHABLE_DISCARDS \
*(.discard) \ *(.discard) \
*(.discard.*) \ *(.discard.*) \
*(.modinfo) \ *(.modinfo) \
......
...@@ -51,6 +51,12 @@ config HAVE_DYNAMIC_FTRACE_WITH_ARGS ...@@ -51,6 +51,12 @@ config HAVE_DYNAMIC_FTRACE_WITH_ARGS
This allows for use of regs_get_kernel_argument() and This allows for use of regs_get_kernel_argument() and
kernel_stack_pointer(). kernel_stack_pointer().
config HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
bool
help
If the architecture generates __patchable_function_entries sections
but does not want them included in the ftrace locations.
config HAVE_FTRACE_MCOUNT_RECORD config HAVE_FTRACE_MCOUNT_RECORD
bool bool
help help
......
...@@ -4113,7 +4113,8 @@ static int validate_ibt(struct objtool_file *file) ...@@ -4113,7 +4113,8 @@ static int validate_ibt(struct objtool_file *file)
!strcmp(sec->name, "__bug_table") || !strcmp(sec->name, "__bug_table") ||
!strcmp(sec->name, "__ex_table") || !strcmp(sec->name, "__ex_table") ||
!strcmp(sec->name, "__jump_table") || !strcmp(sec->name, "__jump_table") ||
!strcmp(sec->name, "__mcount_loc")) !strcmp(sec->name, "__mcount_loc") ||
strstr(sec->name, "__patchable_function_entries"))
continue; continue;
list_for_each_entry(reloc, &sec->reloc->reloc_list, list) list_for_each_entry(reloc, &sec->reloc->reloc_list, list)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment