Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kbuild: strip whitespace in cmd_record_mcount findstring

CC_FLAGS_FTRACE may contain trailing whitespace that interferes with
findstring.

For example, commit 6977f95e63b9 ("powerpc: avoid -mno-sched-epilog on
GCC 4.9 and newer") introduced a change such that on my ppc64le box,
CC_FLAGS_FTRACE="-pg -mprofile-kernel ". (Note the trailing space.)
When cmd_record_mcount is now invoked, findstring fails as the ftrace
flags were found at very end of _c_flags, without the trailing space.

_c_flags=" ... -pg -mprofile-kernel"
CC_FLAGS_FTRACE="-pg -mprofile-kernel "
^
findstring is looking for this extra space

Remove the redundant whitespaces from CC_FLAGS_FTRACE in
cmd_record_mcount to avoid this problem.

[masahiro.yamada: This issue only happens in the released versions
of GNU Make. CC_FLAGS_FTRACE will not contain the trailing space if
you use the latest GNU Make, which contains commit b90fabc8d6f3
("* NEWS: Do not insert a space during '+=' if the value is empty.") ]

Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com> (refactoring)
Fixes: 6977f95e63b9 ("powerpc: avoid -mno-sched-epilog on GCC 4.9 and newer").
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

authored by

Joe Lawrence and committed by
Masahiro Yamada
1a49b2fd 156e7cbb

+2 -5
+2 -5
scripts/Makefile.build
··· 199 199 "$(if $(part-of-module),1,0)" "$(@)"; 200 200 recordmcount_source := $(srctree)/scripts/recordmcount.pl 201 201 endif # BUILD_C_RECORDMCOUNT 202 - cmd_record_mcount = \ 203 - if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \ 204 - "$(CC_FLAGS_FTRACE)" ]; then \ 205 - $(sub_cmd_record_mcount) \ 206 - fi 202 + cmd_record_mcount = $(if $(findstring $(strip $(CC_FLAGS_FTRACE)),$(_c_flags)), \ 203 + $(sub_cmd_record_mcount)) 207 204 endif # CC_USING_RECORD_MCOUNT 208 205 endif # CONFIG_FTRACE_MCOUNT_RECORD 209 206