Wu Zhangjin wrote:
Hi,
On Mon, 2009-11-09 at 16:26 -0800, David Daney wrote:
Wu Zhangjin wrote:
+ifndef CONFIG_FUNCTION_TRACER
cflags-y := -ffunction-sections
+else
+cflags-y := -mlong-calls
+endif
cflags-y += $(call cc-option, -mno-check-zero-division)
That doesn't make sense to me. Modules are already compiled with
-mlong-calls. The only time you would need the entire kernel compiled
with -mlong-calls is if the tracer were in a module. The logic here
doesn't seem to reflect that.
Yes, I knew the module have gotten the -mlong-calls, Here we just want
to use -mlong-calls for the whole kernel, and then we get the same
_mcount stuff in the whole kernel, at last, we can use the same
scripts/recordmcount.pl and ftrace_make_nop & ftrace_make_call for the
dynamic ftracer.
-mlong-calls really degrades performance. I have seen things like 6%
drop in network packet forwarding rates with -mlong-calls.
It would be better to fix all the tools so that they could handle both
-mlong-calls and -mno-long-calls code.
David Daney