mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
ftrace: allow architectures to specify ftrace compile options
If the kernel is compiled with function tracer support the -pg compile option is passed to gcc to generate extra code into the prologue of each function. This patch replaces the "open-coded" -pg compile flag with a CC_FLAGS_FTRACE makefile variable which architectures can override if a different option should be used for code generation. Acked-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
4d92f50249
commit
c0a80c0c27
8 changed files with 19 additions and 14 deletions
6
Makefile
6
Makefile
|
@ -724,10 +724,14 @@ KBUILD_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
|
ifndef CC_FLAGS_FTRACE
|
||||||
|
CC_FLAGS_FTRACE := -pg
|
||||||
|
endif
|
||||||
|
export CC_FLAGS_FTRACE
|
||||||
ifdef CONFIG_HAVE_FENTRY
|
ifdef CONFIG_HAVE_FENTRY
|
||||||
CC_USING_FENTRY := $(call cc-option, -mfentry -DCC_USING_FENTRY)
|
CC_USING_FENTRY := $(call cc-option, -mfentry -DCC_USING_FENTRY)
|
||||||
endif
|
endif
|
||||||
KBUILD_CFLAGS += -pg $(CC_USING_FENTRY)
|
KBUILD_CFLAGS += $(CC_FLAGS_FTRACE) $(CC_USING_FENTRY)
|
||||||
KBUILD_AFLAGS += $(CC_USING_FENTRY)
|
KBUILD_AFLAGS += $(CC_USING_FENTRY)
|
||||||
ifdef CONFIG_DYNAMIC_FTRACE
|
ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
ifdef CONFIG_HAVE_C_RECORDMCOUNT
|
ifdef CONFIG_HAVE_C_RECORDMCOUNT
|
||||||
|
|
|
@ -13,8 +13,8 @@ obj-y = fork.o exec_domain.o panic.o \
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
# Do not trace debug files and internal ftrace files
|
# Do not trace debug files and internal ftrace files
|
||||||
CFLAGS_REMOVE_cgroup-debug.o = -pg
|
CFLAGS_REMOVE_cgroup-debug.o = $(CC_FLAGS_FTRACE)
|
||||||
CFLAGS_REMOVE_irq_work.o = -pg
|
CFLAGS_REMOVE_irq_work.o = $(CC_FLAGS_FTRACE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# cond_syscall is currently not LTO compatible
|
# cond_syscall is currently not LTO compatible
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
CFLAGS_REMOVE_core.o = -pg
|
CFLAGS_REMOVE_core.o = $(CC_FLAGS_FTRACE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
obj-y := core.o ring_buffer.o callchain.o
|
obj-y := core.o ring_buffer.o callchain.o
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
obj-y += mutex.o semaphore.o rwsem.o mcs_spinlock.o
|
obj-y += mutex.o semaphore.o rwsem.o mcs_spinlock.o
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
CFLAGS_REMOVE_lockdep.o = -pg
|
CFLAGS_REMOVE_lockdep.o = $(CC_FLAGS_FTRACE)
|
||||||
CFLAGS_REMOVE_lockdep_proc.o = -pg
|
CFLAGS_REMOVE_lockdep_proc.o = $(CC_FLAGS_FTRACE)
|
||||||
CFLAGS_REMOVE_mutex-debug.o = -pg
|
CFLAGS_REMOVE_mutex-debug.o = $(CC_FLAGS_FTRACE)
|
||||||
CFLAGS_REMOVE_rtmutex-debug.o = -pg
|
CFLAGS_REMOVE_rtmutex-debug.o = $(CC_FLAGS_FTRACE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
|
obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
CFLAGS_REMOVE_clock.o = -pg
|
CFLAGS_REMOVE_clock.o = $(CC_FLAGS_FTRACE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
|
ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
||||||
KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS))
|
KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
|
||||||
|
|
||||||
ifdef CONFIG_FTRACE_SELFTEST
|
ifdef CONFIG_FTRACE_SELFTEST
|
||||||
# selftest needs instrumentation
|
# selftest needs instrumentation
|
||||||
CFLAGS_trace_selftest_dynamic.o = -pg
|
CFLAGS_trace_selftest_dynamic.o = $(CC_FLAGS_FTRACE)
|
||||||
obj-y += trace_selftest_dynamic.o
|
obj-y += trace_selftest_dynamic.o
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
||||||
KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS))
|
KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
lib-y := ctype.o string.o vsprintf.o cmdline.o \
|
lib-y := ctype.o string.o vsprintf.o cmdline.o \
|
||||||
|
|
|
@ -234,8 +234,9 @@ sub_cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH
|
||||||
"$(if $(part-of-module),1,0)" "$(@)";
|
"$(if $(part-of-module),1,0)" "$(@)";
|
||||||
recordmcount_source := $(srctree)/scripts/recordmcount.pl
|
recordmcount_source := $(srctree)/scripts/recordmcount.pl
|
||||||
endif
|
endif
|
||||||
cmd_record_mcount = \
|
cmd_record_mcount = \
|
||||||
if [ "$(findstring -pg,$(_c_flags))" = "-pg" ]; then \
|
if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \
|
||||||
|
"$(CC_FLAGS_FTRACE)" ]; then \
|
||||||
$(sub_cmd_record_mcount) \
|
$(sub_cmd_record_mcount) \
|
||||||
fi;
|
fi;
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue