mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									9f591fd76a
								
							
						
					
					
						commit
						dcd5c1662d
					
				
					 3 changed files with 6 additions and 1 deletions
				
			
		|  | @ -1702,6 +1702,7 @@ struct perf_callchain_entry *perf_callchain(struct pt_regs *regs) | |||
| 	return entry; | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_EVENT_TRACING | ||||
| void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip) | ||||
| { | ||||
| 	regs->ip = ip; | ||||
|  | @ -1713,4 +1714,4 @@ void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int ski | |||
| 	regs->cs = __KERNEL_CS; | ||||
| 	local_save_flags(regs->flags); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(perf_arch_fetch_caller_regs); | ||||
| #endif | ||||
|  |  | |||
|  | @ -2786,10 +2786,12 @@ __weak struct perf_callchain_entry *perf_callchain(struct pt_regs *regs) | |||
| 	return NULL; | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_EVENT_TRACING | ||||
| __weak | ||||
| void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip) | ||||
| { | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * Output | ||||
|  |  | |||
|  | @ -12,6 +12,8 @@ | |||
| DEFINE_PER_CPU(struct pt_regs, perf_trace_regs); | ||||
| EXPORT_PER_CPU_SYMBOL_GPL(perf_trace_regs); | ||||
| 
 | ||||
| EXPORT_SYMBOL_GPL(perf_arch_fetch_caller_regs); | ||||
| 
 | ||||
| static char *perf_trace_buf; | ||||
| static char *perf_trace_buf_nmi; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Frederic Weisbecker
						Frederic Weisbecker