前几天需要给当前的内核(2.6.27.28)上打上ftrace的patch,由于前一个项目平台是mips的,所以patch也是基于mips的(laura的没找到),打上之后,开启ftrace 的function trace,编译,然后就出现链接错误“linking mips:isa32r2 module with previous mips:laura1x modules”找了一天,没发现什么毛病,为什么加进function-trace就出问题了呢?今天有时间仔细看了下这个patch,发现在出问题的tracepoint打开的情况下,有这么一段
- --- scripts/Makefile.build (版本 4686)
- +++ scripts/Makefile.build (工作副本)
- @@ -198,10 +198,18 @@
- fi;
- endif
- +ifdef CONFIG_FTRACE_MCOUNT_RECORD
- +cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
- + "$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \
- + "$(if $(CONFIG_64BIT),64,32)" \
- + "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" "$(@)";
- +endif
- +
- define rule_cc_o_c
- $(call echo-cmd,checksrc) $(cmd_checksrc) \
- $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \
- $(cmd_modversions) \
- + $(cmd_record_mcount) \
- scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \
- $(dot-target).tmp; \
- rm -f $(depfile); \
- Index: Makefile
最终他是在 scripts/recordmcount.pl中做了一次arch的判断(在build的时候),这样问题就出来了,由于我们平台是mips,而工具链是基于laura的,这里在判断的时候是mips的体系,由于这里没有针对laura cpu的,于是就选择了默认的mips:isa32r2, 于是悲剧就产生了。 对于GCC完全白痴的我,这个问题难倒我了,无解。。。。 好在打ftrace patch的目的不在于function trace。追查工作就到此了
阅读(1351) | 评论(0) | 转发(0) |