aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2010-03-15 20:05:02 -0400
committerIngo Molnar <mingo@elte.hu>2010-03-17 07:26:49 -0400
commitdcd5c1662db59a6b82942f47fb6ac9dd63f6d3dd (patch)
tree432f0d89d45fc62d666d46e591ffe109f111cb1e /kernel
parent9f591fd76afdc0e5192e9ed00a36f8efc0b4dfe6 (diff)
perf: Fix unexported generic perf_arch_fetch_caller_regs
perf_arch_fetch_caller_regs() is exported for the overriden x86 version, but not for the generic weak version. As a general rule, weak functions should not have their symbol exported in the same file they are defined. So let's export it on trace_event_perf.c as it is used by trace events only. This fixes: ERROR: ".perf_arch_fetch_caller_regs" [fs/xfs/xfs.ko] undefined! ERROR: ".perf_arch_fetch_caller_regs" [arch/powerpc/platforms/cell/spufs/spufs.ko] undefined! -v2: And also only build it if trace events are enabled. -v3: Fix changelog mistake Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1268697902-9518-1-git-send-regression-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/perf_event.c2
-rw-r--r--kernel/trace/trace_event_perf.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index fb3031cf9f17..574ee58a3046 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -2786,10 +2786,12 @@ __weak struct perf_callchain_entry *perf_callchain(struct pt_regs *regs)
2786 return NULL; 2786 return NULL;
2787} 2787}
2788 2788
2789#ifdef CONFIG_EVENT_TRACING
2789__weak 2790__weak
2790void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip) 2791void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip)
2791{ 2792{
2792} 2793}
2794#endif
2793 2795
2794/* 2796/*
2795 * Output 2797 * Output
diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c
index 0709e4f75114..7d79a10c3cde 100644
--- a/kernel/trace/trace_event_perf.c
+++ b/kernel/trace/trace_event_perf.c
@@ -12,6 +12,8 @@
12DEFINE_PER_CPU(struct pt_regs, perf_trace_regs); 12DEFINE_PER_CPU(struct pt_regs, perf_trace_regs);
13EXPORT_PER_CPU_SYMBOL_GPL(perf_trace_regs); 13EXPORT_PER_CPU_SYMBOL_GPL(perf_trace_regs);
14 14
15EXPORT_SYMBOL_GPL(perf_arch_fetch_caller_regs);
16
15static char *perf_trace_buf; 17static char *perf_trace_buf;
16static char *perf_trace_buf_nmi; 18static char *perf_trace_buf_nmi;
17 19