Skip to content

Commit b1f4ff7

Browse files
pzanoni-intelrostedt
authored andcommitted
tracing/Makefile: Fix handling redefinition of CC_FLAGS_FTRACE
As a Kernel developer, I make heavy use of "make targz-pkg" in order to locally compile and remotely install my development Kernels. The nice feature I rely on is that after a normal "make", "make targz-pkg" only generates the tarball without having to recompile everything. That was true until commit f28bc3c ("tracing: Handle CC_FLAGS_FTRACE more accurately"). After it, running "make targz-pkg" after "make" will recompile the whole Kernel tree, making my development workflow much slower. The Kernel is choosing to recompile everything because it claims the command line has changed. A diff of the .cmd files show a repeated -mfentry in one of the files. That is because "make targz-pkg" calls "make modules_install" and the environment is already populated with the exported variables, CC_FLAGS_FTRACE being one of them. Then, -mfentry gets duplicated because it is not protected behind an ifndef block, like -pg. To complicate the problem a little bit more, architectures can define their own version CC_FLAGS_FTRACE, so our code not only has to consider recursive Makefiles, but also architecture overrides. So in this patch we move CC_FLAGS_FTRACE up and unconditionally define it to -pg. Then we let the architecture Makefiles possibly override it, and finally append the extra options later. This ensures the variable is always fully redefined at each invocation so recursive Makefiles don't keep appending, and hopefully it maintains the intended behavior on how architectures can override the defaults.. Thanks Steven Rostedt and Vasily Gorbik for the help on this regression. Cc: Michal Marek <michal.lkml@markovi.net> Cc: Ingo Molnar <mingo@redhat.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: linux-kbuild@vger.kernel.org Fixes: commit f28bc3c ("tracing: Handle CC_FLAGS_FTRACE more accurately") Acked-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
1 parent 11da3a7 commit b1f4ff7

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

Makefile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,11 @@ CFLAGS_GCOV := -fprofile-arcs -ftest-coverage \
616616
$(call cc-disable-warning,maybe-uninitialized,)
617617
export CFLAGS_GCOV
618618

619+
# The arch Makefiles can override CC_FLAGS_FTRACE. We may also append it later.
620+
ifdef CONFIG_FUNCTION_TRACER
621+
CC_FLAGS_FTRACE := -pg
622+
endif
623+
619624
# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
620625
# values of the respective KBUILD_* variables
621626
ARCH_CPPFLAGS :=
@@ -755,9 +760,6 @@ KBUILD_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \
755760
endif
756761

757762
ifdef CONFIG_FUNCTION_TRACER
758-
ifndef CC_FLAGS_FTRACE
759-
CC_FLAGS_FTRACE := -pg
760-
endif
761763
ifdef CONFIG_FTRACE_MCOUNT_RECORD
762764
# gcc 5 supports generating the mcount tables directly
763765
ifeq ($(call cc-option-yn,-mrecord-mcount),y)

0 commit comments

Comments
 (0)