• Paulo Zanoni's avatar
    tracing/Makefile: Fix handling redefinition of CC_FLAGS_FTRACE · b1f4ff74
    Paulo Zanoni authored
    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 f28bc3c3 ("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 f28bc3c3 ("tracing: Handle CC_FLAGS_FTRACE more accurately")
    Acked-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    b1f4ff74
Makefile 59.2 KB