diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-07-17 11:40:48 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-17 11:40:48 -0400 |
| commit | 2464a609ded094204a3aed24823745ec58e3c879 (patch) | |
| tree | 54080daf81746787dbd11160752e04b9652b8728 /lib | |
| parent | c349e0a01c3e0f70913db6a5bb61ab204e0602de (diff) | |
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>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Makefile | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/lib/Makefile b/lib/Makefile index d90d31102e05..818c4d455518 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
| @@ -2,24 +2,17 @@ | |||
| 2 | # Makefile for some libs needed in the kernel. | 2 | # Makefile for some libs needed in the kernel. |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | ifdef CONFIG_FTRACE | ||
| 6 | ORIG_CFLAGS := $(KBUILD_CFLAGS) | ||
| 7 | KBUILD_CFLAGS = $(subst -pg,,$(ORIG_CFLAGS)) | ||
| 8 | endif | ||
| 9 | |||
| 5 | lib-y := ctype.o string.o vsprintf.o cmdline.o \ | 10 | lib-y := ctype.o string.o vsprintf.o cmdline.o \ |
| 6 | rbtree.o radix-tree.o dump_stack.o \ | 11 | rbtree.o radix-tree.o dump_stack.o \ |
| 7 | idr.o int_sqrt.o extable.o prio_tree.o \ | 12 | idr.o int_sqrt.o extable.o prio_tree.o \ |
| 8 | sha1.o irq_regs.o reciprocal_div.o argv_split.o \ | 13 | sha1.o irq_regs.o reciprocal_div.o argv_split.o \ |
| 9 | proportions.o prio_heap.o ratelimit.o | 14 | proportions.o prio_heap.o ratelimit.o |
| 10 | 15 | ||
| 11 | ifdef CONFIG_FTRACE | ||
| 12 | # Do not profile string.o, since it may be used in early boot or vdso | ||
| 13 | CFLAGS_REMOVE_string.o = -pg | ||
| 14 | # Also do not profile any debug utilities | ||
| 15 | CFLAGS_REMOVE_spinlock_debug.o = -pg | ||
| 16 | CFLAGS_REMOVE_list_debug.o = -pg | ||
| 17 | CFLAGS_REMOVE_debugobjects.o = -pg | ||
| 18 | CFLAGS_REMOVE_find_next_bit.o = -pg | ||
| 19 | CFLAGS_REMOVE_cpumask.o = -pg | ||
| 20 | CFLAGS_REMOVE_bitmap.o = -pg | ||
| 21 | endif | ||
| 22 | |||
| 23 | lib-$(CONFIG_MMU) += ioremap.o | 16 | lib-$(CONFIG_MMU) += ioremap.o |
| 24 | lib-$(CONFIG_SMP) += cpumask.o | 17 | lib-$(CONFIG_SMP) += cpumask.o |
| 25 | 18 | ||
