diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-05-14 02:10:31 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-23 16:36:24 -0400 |
commit | 37135677e653537ffc6e7def679443272a1c03c3 (patch) | |
tree | 13ca182dfe446cefc60f8cf5e91b59a43b3170f7 | |
parent | d05f5f9906740474eb768823004ffcd775b12ca6 (diff) |
ftrace: fix mcount export bug
David S. Miller noticed the following bug: the -pg instrumentation
function callback is named differently on each platform. On x86 it
is mcount, on sparc it is _mcount. So the export does not make sense
in kernel/trace/ftrace.c - move it to x86.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | arch/x86/kernel/i386_ksyms_32.c | 9 | ||||
-rw-r--r-- | arch/x86/kernel/x8664_ksyms_64.c | 11 | ||||
-rw-r--r-- | kernel/trace/ftrace.c | 3 |
3 files changed, 17 insertions, 6 deletions
diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c index deb43785e923..29999dbb754c 100644 --- a/arch/x86/kernel/i386_ksyms_32.c +++ b/arch/x86/kernel/i386_ksyms_32.c | |||
@@ -1,7 +1,14 @@ | |||
1 | #include <linux/ftrace.h> | ||
1 | #include <linux/module.h> | 2 | #include <linux/module.h> |
3 | |||
2 | #include <asm/checksum.h> | 4 | #include <asm/checksum.h> |
3 | #include <asm/desc.h> | ||
4 | #include <asm/pgtable.h> | 5 | #include <asm/pgtable.h> |
6 | #include <asm/desc.h> | ||
7 | |||
8 | #ifdef CONFIG_FTRACE | ||
9 | /* mcount is defined in assembly */ | ||
10 | EXPORT_SYMBOL(mcount); | ||
11 | #endif | ||
5 | 12 | ||
6 | /* Networking helper routines. */ | 13 | /* Networking helper routines. */ |
7 | EXPORT_SYMBOL(csum_partial_copy_generic); | 14 | EXPORT_SYMBOL(csum_partial_copy_generic); |
diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c index f6c05d0410fb..122885bc5f3b 100644 --- a/arch/x86/kernel/x8664_ksyms_64.c +++ b/arch/x86/kernel/x8664_ksyms_64.c | |||
@@ -1,15 +1,22 @@ | |||
1 | /* Exports for assembly files. | 1 | /* Exports for assembly files. |
2 | All C exports should go in the respective C files. */ | 2 | All C exports should go in the respective C files. */ |
3 | 3 | ||
4 | #include <linux/ftrace.h> | ||
4 | #include <linux/module.h> | 5 | #include <linux/module.h> |
5 | #include <net/checksum.h> | ||
6 | #include <linux/smp.h> | 6 | #include <linux/smp.h> |
7 | 7 | ||
8 | #include <net/checksum.h> | ||
9 | |||
8 | #include <asm/processor.h> | 10 | #include <asm/processor.h> |
9 | #include <asm/uaccess.h> | ||
10 | #include <asm/pgtable.h> | 11 | #include <asm/pgtable.h> |
12 | #include <asm/uaccess.h> | ||
11 | #include <asm/desc.h> | 13 | #include <asm/desc.h> |
12 | 14 | ||
15 | #ifdef CONFIG_FTRACE | ||
16 | /* mcount is defined in assembly */ | ||
17 | EXPORT_SYMBOL(mcount); | ||
18 | #endif | ||
19 | |||
13 | EXPORT_SYMBOL(kernel_thread); | 20 | EXPORT_SYMBOL(kernel_thread); |
14 | 21 | ||
15 | EXPORT_SYMBOL(__get_user_1); | 22 | EXPORT_SYMBOL(__get_user_1); |
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 07b2a14943f8..a3e47f43f8a0 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
@@ -50,9 +50,6 @@ static struct ftrace_ops ftrace_list_end __read_mostly = | |||
50 | static struct ftrace_ops *ftrace_list __read_mostly = &ftrace_list_end; | 50 | static struct ftrace_ops *ftrace_list __read_mostly = &ftrace_list_end; |
51 | ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub; | 51 | ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub; |
52 | 52 | ||
53 | /* mcount is defined per arch in assembly */ | ||
54 | EXPORT_SYMBOL(mcount); | ||
55 | |||
56 | void ftrace_list_func(unsigned long ip, unsigned long parent_ip) | 53 | void ftrace_list_func(unsigned long ip, unsigned long parent_ip) |
57 | { | 54 | { |
58 | struct ftrace_ops *op = ftrace_list; | 55 | struct ftrace_ops *op = ftrace_list; |