linux/tools/perf/util
Arnaldo Carvalho de Melo 2e538c4a18 perf tools: Improve kernel/modules symbol lookup
This removes the ovelapping of vmlinux addresses with modules,
using the ELF section name when using --vmlinux and creating a
unique DSO name when using /proc/kallsyms ([kernel].N).

This is done by creating multiple 'struct map' instances for
address ranges backed by DSOs that have just the symbols for that
range and a name that is derived from the ELF section name.o

Now it is possible to ask for just the symbols in some particular
kernel section:

$ perf report -m --vmlinux ../build/tip-recvmmsg/vmlinux \
	--dsos [kernel].vsyscall_fn | head -15
    52.73%             Xorg  [.] vread_hpet
    18.61%          firefox  [.] vread_hpet
    14.50%     npviewer.bin  [.] vread_hpet
     6.83%           compiz  [.] vread_hpet
     5.73%         glxgears  [.] vread_hpet
     0.63%             java  [.] vread_hpet
     0.30%   gnome-terminal  [.] vread_hpet
     0.23%             perf  [.] vread_hpet
     0.18%            xchat  [.] vread_hpet
$

Now we don't have to first lookup the list of modules and then, if
it fails, vmlinux symbols, its just a simple lookup for the map
then the symbols, just like for threads.

Reports generated using /proc/kallsyms and --vmlinux should provide
the same results, modulo the DSO name for sections other than
".text".

But they don't right now because things like:

 ffffffff81011c20-ffffffff81012068 system_call
 ffffffff81011c30-ffffffff81011c9b system_call_after_swapgs
 ffffffff81011c9c-ffffffff81011cb6 system_call_fastpath
 ffffffff81011cb7-ffffffff81011cbb ret_from_sys_call

I.e. overlapping symbols, again some ASM special case that we have
to fixup.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <1254934136-8503-1-git-send-email-acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-10-08 19:27:11 +02:00
..
include perf report: Adjust column width to the values sampled 2009-07-11 10:24:11 +02:00
abspath.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
alias.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
cache.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
callchain.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
callchain.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
color.c perf tools: Librarize trace_event() helper 2009-08-16 23:06:45 +02:00
color.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
config.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
ctype.c perf_counter tools: Add and use isprint() 2009-06-18 09:46:00 +02:00
data_map.c perf tools: Unify perf.data mapping and events handling 2009-10-08 16:56:32 +02:00
data_map.h perf tools: Unify perf.data mapping and events handling 2009-10-08 16:56:32 +02:00
debug.c perf tools: Librarize trace_event() helper 2009-08-16 23:06:45 +02:00
debug.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
environment.c
event.h perf tools: Remove show_mask bitmask 2009-10-04 19:37:11 +02:00
exec_cmd.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
exec_cmd.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
generate-cmdlist.sh
header.c perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
header.h perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
help.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
help.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
hist.c perf tools: Move hist_entry__add common code to hist.c 2009-10-03 16:01:59 +02:00
hist.h perf tools: Move hist_entry__add common code to hist.c 2009-10-03 16:01:59 +02:00
levenshtein.c
levenshtein.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
map.c perf tools: Factorize the map helpers 2009-08-12 12:37:37 +02:00
pager.c perf_counter tools: Remove dead code 2009-06-27 06:06:39 +02:00
parse-events.c perf tools: Dont use openat() 2009-09-24 21:20:08 +02:00
parse-events.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
parse-options.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
parse-options.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
path.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
PERF-VERSION-GEN
quote.c perf: Fix read buffer overflow 2009-08-04 11:09:56 +02:00
quote.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
run-command.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
run-command.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
sigchain.c
sigchain.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
sort.c perf tools: Rewrite and improve support for kernel modules 2009-10-02 10:48:42 +02:00
sort.h perf tools: Rewrite and improve support for kernel modules 2009-10-02 10:48:42 +02:00
strbuf.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
strbuf.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
string.c perf tools: /proc/modules names don't always match its name 2009-10-05 20:35:23 +02:00
string.h perf tools: /proc/modules names don't always match its name 2009-10-05 20:35:23 +02:00
strlist.c strlist: Introduce strlist__entry and strlist__nr_entries methods 2009-07-11 19:20:25 +02:00
strlist.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
svghelper.c perf timechart: Add a power-only mode 2009-10-01 09:26:40 +02:00
svghelper.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
symbol.c perf tools: Improve kernel/modules symbol lookup 2009-10-08 19:27:11 +02:00
symbol.h perf tools: Create maps for modules when processing kallsyms 2009-10-05 20:35:23 +02:00
thread.c perf tools: Improve thread comm resolution in perf sched 2009-10-08 16:56:33 +02:00
thread.h perf tools: Improve thread comm resolution in perf sched 2009-10-08 16:56:33 +02:00
trace-event-info.c perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
trace-event-parse.c perf trace: Add string/dynamic cases to format_flags 2009-10-06 15:04:46 +02:00
trace-event-read.c perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
trace-event.h perf tools: Merge trace.info content into perf.data 2009-10-07 08:36:10 +02:00
types.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
usage.c perf top: Fall back to cpu-clock-tick hrtimer sampling if no cycle counter available 2009-06-07 17:31:52 +02:00
util.h Merge branch 'perfcounters/tracing' into perfcounters/core 2009-08-31 10:03:27 +02:00
values.c perf: Enable more compiler warnings 2009-08-16 10:47:47 +02:00
values.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
wrapper.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00