aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2008-05-12 15:20:54 -0400
committerThomas Gleixner <tglx@linutronix.de>2008-05-23 15:13:23 -0400
commitd05cdb25d80f06f77aa6bddb53cd1390d4d91a0b (patch)
tree6c7f70f5252cbd42a1949c2d7019fe9f337bd205
parent06fa75ab566c50e01bfd7b055bde85cf9b1bc98a (diff)
ftrace: fix dynamic ftrace selftest
With the adding of the configuration changes in the Makefile to prevent tracing of functions in the ftrace code, all tracing of all the ftrace code has been removed. Unfortunately, one of the selftests, relied on a function to be traced. With the new change, the function was no longer traced and the test failed. This patch separates out the test function into its own file so that we can add the "-pg" flag to the compilation of that function and the adding of the mcount call to that function. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--kernel/trace/Makefile4
-rw-r--r--kernel/trace/trace.h2
-rw-r--r--kernel/trace/trace_selftest.c6
-rw-r--r--kernel/trace/trace_selftest_dynamic.c7
4 files changed, 13 insertions, 6 deletions
diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
index c25a6cd6a529..d9efbbfa2bdf 100644
--- a/kernel/trace/Makefile
+++ b/kernel/trace/Makefile
@@ -4,6 +4,10 @@
4ifdef CONFIG_FTRACE 4ifdef CONFIG_FTRACE
5ORIG_CFLAGS := $(KBUILD_CFLAGS) 5ORIG_CFLAGS := $(KBUILD_CFLAGS)
6KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS)) 6KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS))
7
8# selftest needs instrumentation
9CFLAGS_trace_selftest_dynamic.o = -pg
10obj-y += trace_selftest_dynamic.o
7endif 11endif
8 12
9obj-$(CONFIG_FTRACE) += libftrace.o 13obj-$(CONFIG_FTRACE) += libftrace.o
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 96951a8d09a4..98cbfd05d754 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -244,6 +244,8 @@ extern int unregister_tracer_switch(struct tracer_switch_ops *ops);
244 244
245#ifdef CONFIG_DYNAMIC_FTRACE 245#ifdef CONFIG_DYNAMIC_FTRACE
246extern unsigned long ftrace_update_tot_cnt; 246extern unsigned long ftrace_update_tot_cnt;
247#define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func
248extern int DYN_FTRACE_TEST_NAME(void);
247#endif 249#endif
248 250
249#ifdef CONFIG_FTRACE_STARTUP_TEST 251#ifdef CONFIG_FTRACE_STARTUP_TEST
diff --git a/kernel/trace/trace_selftest.c b/kernel/trace/trace_selftest.c
index 92f4acb7740c..83e55a2000cc 100644
--- a/kernel/trace/trace_selftest.c
+++ b/kernel/trace/trace_selftest.c
@@ -107,14 +107,8 @@ static int trace_test_buffer(struct trace_array *tr, unsigned long *count)
107 107
108#ifdef CONFIG_DYNAMIC_FTRACE 108#ifdef CONFIG_DYNAMIC_FTRACE
109 109
110#define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func
111#define __STR(x) #x 110#define __STR(x) #x
112#define STR(x) __STR(x) 111#define STR(x) __STR(x)
113static int DYN_FTRACE_TEST_NAME(void)
114{
115 /* used to call mcount */
116 return 0;
117}
118 112
119/* Test dynamic code modification and ftrace filters */ 113/* Test dynamic code modification and ftrace filters */
120int trace_selftest_startup_dynamic_tracing(struct tracer *trace, 114int trace_selftest_startup_dynamic_tracing(struct tracer *trace,
diff --git a/kernel/trace/trace_selftest_dynamic.c b/kernel/trace/trace_selftest_dynamic.c
new file mode 100644
index 000000000000..54dd77cce5bf
--- /dev/null
+++ b/kernel/trace/trace_selftest_dynamic.c
@@ -0,0 +1,7 @@
1#include "trace.h"
2
3int DYN_FTRACE_TEST_NAME(void)
4{
5 /* used to call mcount */
6 return 0;
7}