Commit 22c8542d authored by Sami Tolvanen's avatar Sami Tolvanen Committed by Kees Cook

tracing: add support for objtool mcount

This change adds build support for using objtool to generate
__mcount_loc sections.
Signed-off-by: default avatarSami Tolvanen <samitolvanen@google.com>
parent 0e731dbc
...@@ -860,6 +860,9 @@ ifdef CONFIG_FTRACE_MCOUNT_USE_CC ...@@ -860,6 +860,9 @@ ifdef CONFIG_FTRACE_MCOUNT_USE_CC
endif endif
endif endif
endif endif
ifdef CONFIG_FTRACE_MCOUNT_USE_OBJTOOL
CC_FLAGS_USING += -DCC_USING_NOP_MCOUNT
endif
ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
ifdef CONFIG_HAVE_C_RECORDMCOUNT ifdef CONFIG_HAVE_C_RECORDMCOUNT
BUILD_C_RECORDMCOUNT := y BUILD_C_RECORDMCOUNT := y
...@@ -1236,6 +1239,10 @@ uapi-asm-generic: ...@@ -1236,6 +1239,10 @@ uapi-asm-generic:
PHONY += prepare-objtool prepare-resolve_btfids PHONY += prepare-objtool prepare-resolve_btfids
prepare-objtool: $(objtool_target) prepare-objtool: $(objtool_target)
ifeq ($(SKIP_STACK_VALIDATION),1) ifeq ($(SKIP_STACK_VALIDATION),1)
ifdef CONFIG_FTRACE_MCOUNT_USE_OBJTOOL
@echo "error: Cannot generate __mcount_loc for CONFIG_DYNAMIC_FTRACE=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
@false
endif
ifdef CONFIG_UNWINDER_ORC ifdef CONFIG_UNWINDER_ORC
@echo "error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2 @echo "error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
@false @false
......
...@@ -60,6 +60,11 @@ config HAVE_NOP_MCOUNT ...@@ -60,6 +60,11 @@ config HAVE_NOP_MCOUNT
help help
Arch supports the gcc options -pg with -mrecord-mcount and -nop-mcount Arch supports the gcc options -pg with -mrecord-mcount and -nop-mcount
config HAVE_OBJTOOL_MCOUNT
bool
help
Arch supports objtool --mcount
config HAVE_C_RECORDMCOUNT config HAVE_C_RECORDMCOUNT
bool bool
help help
...@@ -612,10 +617,18 @@ config FTRACE_MCOUNT_USE_CC ...@@ -612,10 +617,18 @@ config FTRACE_MCOUNT_USE_CC
depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
depends on FTRACE_MCOUNT_RECORD depends on FTRACE_MCOUNT_RECORD
config FTRACE_MCOUNT_USE_OBJTOOL
def_bool y
depends on HAVE_OBJTOOL_MCOUNT
depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
depends on !FTRACE_MCOUNT_USE_CC
depends on FTRACE_MCOUNT_RECORD
config FTRACE_MCOUNT_USE_RECORDMCOUNT config FTRACE_MCOUNT_USE_RECORDMCOUNT
def_bool y def_bool y
depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
depends on !FTRACE_MCOUNT_USE_CC depends on !FTRACE_MCOUNT_USE_CC
depends on !FTRACE_MCOUNT_USE_OBJTOOL
depends on FTRACE_MCOUNT_RECORD depends on FTRACE_MCOUNT_RECORD
config TRACING_MAP config TRACING_MAP
......
...@@ -238,6 +238,9 @@ endif ...@@ -238,6 +238,9 @@ endif
ifdef CONFIG_X86_SMAP ifdef CONFIG_X86_SMAP
objtool_args += --uaccess objtool_args += --uaccess
endif endif
ifdef CONFIG_FTRACE_MCOUNT_USE_OBJTOOL
objtool_args += --mcount
endif
# 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory # 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory
# 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file
......
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