Michal, Can you give an Acked-by: on this patch? Thanks! -- Steve On Thu, 2010-10-28 at 00:24 +0800, Wu Zhangjin wrote: > From: Wu Zhangjin <wuzhangjin@xxxxxxxxx> > > cmd_record_mcount is used to locate the _mcount symbols in the object > files, only the files compiled with -pg has the _mcount symbol, so, it > is only needed for such files, but the current cmd_record_mcount is used > for all of the object files, so, we need to fix it and speed it up. > > Since -pg may be removed by the method used in kernel/trace/Makefile: > > ORIG_CFLAGS := $(KBUILD_CFLAGS) > KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS)) > > Or may be removed by the method used in arch/x86/kernel/Makefile: > > CONFIG_REMOVE_file.o = -pg > > So, we must check the last variable stores the compiling flags, that is > c_flags(Please refer to cmd_cc_o_c and rule_cc_o_c defined in > scripts/Makefile.build) and since the CFLAGS_REMOVE_file.o is already > filtered in _c_flags(Please refer to scripts/Makefile.lib) and _c_flags > has less symbols, therefore, we only need to check _c_flags. > > --------------- > Changes from v1: > > o Don't touch Makefile for CONFIG_FTRACE_MCOUNT_RECORD is enough > o Use _c_flags intead of KBUILD_CFLAGS to cover CONFIG_REMOVE_file.o = -pg > (feedback from Steven Rostedt <rostedt@xxxxxxxxxxx>) > > Signed-off-by: Wu Zhangjin <wuzhangjin@xxxxxxxxx> > --- > scripts/Makefile.build | 13 +++++++++---- > 1 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/scripts/Makefile.build b/scripts/Makefile.build > index 5ad25e1..0ad6108 100644 > --- a/scripts/Makefile.build > +++ b/scripts/Makefile.build > @@ -214,17 +214,22 @@ ifdef BUILD_C_RECORDMCOUNT > # The empty.o file is created in the make process in order to determine > # the target endianness and word size. It is made before all other C > # files, including recordmcount. > -cmd_record_mcount = if [ $(@) != "scripts/mod/empty.o" ]; then \ > - $(objtree)/scripts/recordmcount "$(@)"; \ > - fi; > +sub_cmd_record_mcount = \ > + if [ $(@) != "scripts/mod/empty.o" ]; then \ > + $(objtree)/scripts/recordmcount "$(@)"; \ > + fi; > else > -cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ > +sub_cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ > "$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \ > "$(if $(CONFIG_64BIT),64,32)" \ > "$(OBJDUMP)" "$(OBJCOPY)" "$(CC) $(KBUILD_CFLAGS)" \ > "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ > "$(if $(part-of-module),1,0)" "$(@)"; > endif > +cmd_record_mcount = \ > + if [ "$(findstring -pg,$(_c_flags))" == "-pg" ]; then \ > + $(sub_cmd_record_mcount) \ > + fi; > endif > > define rule_cc_o_c -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html