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

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -860,6 +860,9 @@ ifdef CONFIG_FTRACE_MCOUNT_USE_CC
    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_HAVE_C_RECORDMCOUNT
    BUILD_C_RECORDMCOUNT := y
@@ -1236,6 +1239,10 @@ uapi-asm-generic:
PHONY += prepare-objtool prepare-resolve_btfids
prepare-objtool: $(objtool_target)
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
	@echo "error: Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel" >&2
	@false
+13 −0
Original line number Diff line number Diff line
@@ -60,6 +60,11 @@ config HAVE_NOP_MCOUNT
	help
	  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
	bool
	help
@@ -612,10 +617,18 @@ config FTRACE_MCOUNT_USE_CC
	depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
	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
	def_bool y
	depends on !FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
	depends on !FTRACE_MCOUNT_USE_CC
	depends on !FTRACE_MCOUNT_USE_OBJTOOL
	depends on FTRACE_MCOUNT_RECORD

config TRACING_MAP
+3 −0
Original line number Diff line number Diff line
@@ -238,6 +238,9 @@ endif
ifdef CONFIG_X86_SMAP
  objtool_args += --uaccess
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_foo.o := 'y': skip objtool checking for a file