mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ftrace: do not trace library functions
make function tracing more robust: do not trace library functions. We've already got a sizable list of exceptions: ifdef CONFIG_FTRACE # Do not profile string.o, since it may be used in early boot or vdso CFLAGS_REMOVE_string.o = -pg # Also do not profile any debug utilities CFLAGS_REMOVE_spinlock_debug.o = -pg CFLAGS_REMOVE_list_debug.o = -pg CFLAGS_REMOVE_debugobjects.o = -pg CFLAGS_REMOVE_find_next_bit.o = -pg CFLAGS_REMOVE_cpumask.o = -pg CFLAGS_REMOVE_bitmap.o = -pg endif ... and the pattern has been that random library functionality showed up in ftrace's critical path (outside of its recursion check), causing hard to debug lockups. So be a bit defensive about it and exclude all lib/*.o functions by default. It's not that they are overly interesting for tracing purposes anyway. Specific ones can still be traced, in an opt-in manner. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									c349e0a01c
								
							
						
					
					
						commit
						2464a609de
					
				
					 1 changed files with 5 additions and 12 deletions
				
			
		
							
								
								
									
										17
									
								
								lib/Makefile
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								lib/Makefile
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -2,24 +2,17 @@
 | 
			
		|||
# Makefile for some libs needed in the kernel.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_FTRACE
 | 
			
		||||
ORIG_CFLAGS := $(KBUILD_CFLAGS)
 | 
			
		||||
KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS))
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
lib-y := ctype.o string.o vsprintf.o cmdline.o \
 | 
			
		||||
	 rbtree.o radix-tree.o dump_stack.o \
 | 
			
		||||
	 idr.o int_sqrt.o extable.o prio_tree.o \
 | 
			
		||||
	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
 | 
			
		||||
	 proportions.o prio_heap.o ratelimit.o
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_FTRACE
 | 
			
		||||
# Do not profile string.o, since it may be used in early boot or vdso
 | 
			
		||||
CFLAGS_REMOVE_string.o = -pg
 | 
			
		||||
# Also do not profile any debug utilities
 | 
			
		||||
CFLAGS_REMOVE_spinlock_debug.o = -pg
 | 
			
		||||
CFLAGS_REMOVE_list_debug.o = -pg
 | 
			
		||||
CFLAGS_REMOVE_debugobjects.o = -pg
 | 
			
		||||
CFLAGS_REMOVE_find_next_bit.o = -pg
 | 
			
		||||
CFLAGS_REMOVE_cpumask.o = -pg
 | 
			
		||||
CFLAGS_REMOVE_bitmap.o = -pg
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
lib-$(CONFIG_MMU) += ioremap.o
 | 
			
		||||
lib-$(CONFIG_SMP) += cpumask.o
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue