aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/symbol.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2010-03-15 10:46:58 -0400
committerIngo Molnar <mingo@elte.hu>2010-03-15 11:08:42 -0400
commitb0a9ab62ab96e258a0ddd81d7fe2719c3db36006 (patch)
treef86b57423ac24262533a11fae4c5dc72f7b912bd /tools/perf/util/symbol.c
parentbedbfdea31daf3880745001d56450c683959ee7e (diff)
perf top: Properly notify the user that vmlinux is missing
Before this patch this message would very briefly appear on the screen and then the screen would get updates only on the top, for number of interrupts received, etc, but no annotation would be performed: [root@doppio linux-2.6-tip]# perf top -s n_tty_write > /tmp/bla objdump: '[kernel.kallsyms]': No such file Now this is what the user gets: [root@doppio linux-2.6-tip]# perf top -s n_tty_write Can't annotate n_tty_write: No vmlinux file was found in the path: [0] vmlinux [1] /boot/vmlinux [2] /boot/vmlinux-2.6.33-rc5 [3] /lib/modules/2.6.33-rc5/build/vmlinux [4] /usr/lib/debug/lib/modules/2.6.33-rc5/vmlinux [root@doppio linux-2.6-tip]# This bug was introduced when we added automatic search for vmlinux, before that time the user had to specify a vmlinux file. Reported-by: David S. Miller <davem@davemloft.net> Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: <stable@kernel.org> LKML-Reference: <1268664418-28328-2-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/symbol.c')
-rw-r--r--tools/perf/util/symbol.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 75cd46807c70..292f941555a8 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -18,18 +18,6 @@
18#define NT_GNU_BUILD_ID 3 18#define NT_GNU_BUILD_ID 3
19#endif 19#endif
20 20
21enum dso_origin {
22 DSO__ORIG_KERNEL = 0,
23 DSO__ORIG_JAVA_JIT,
24 DSO__ORIG_BUILD_ID_CACHE,
25 DSO__ORIG_FEDORA,
26 DSO__ORIG_UBUNTU,
27 DSO__ORIG_BUILDID,
28 DSO__ORIG_DSO,
29 DSO__ORIG_KMODULE,
30 DSO__ORIG_NOT_FOUND,
31};
32
33static void dsos__add(struct list_head *head, struct dso *dso); 21static void dsos__add(struct list_head *head, struct dso *dso);
34static struct map *map__new2(u64 start, struct dso *dso, enum map_type type); 22static struct map *map__new2(u64 start, struct dso *dso, enum map_type type);
35static int dso__load_kernel_sym(struct dso *self, struct map *map, 23static int dso__load_kernel_sym(struct dso *self, struct map *map,
@@ -1017,7 +1005,7 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name,
1017 } 1005 }
1018 curr_map->map_ip = identity__map_ip; 1006 curr_map->map_ip = identity__map_ip;
1019 curr_map->unmap_ip = identity__map_ip; 1007 curr_map->unmap_ip = identity__map_ip;
1020 curr_dso->origin = DSO__ORIG_KERNEL; 1008 curr_dso->origin = self->origin;
1021 map_groups__insert(kmap->kmaps, curr_map); 1009 map_groups__insert(kmap->kmaps, curr_map);
1022 dsos__add(&dsos__kernel, curr_dso); 1010 dsos__add(&dsos__kernel, curr_dso);
1023 dso__set_loaded(curr_dso, map->type); 1011 dso__set_loaded(curr_dso, map->type);
@@ -1887,6 +1875,17 @@ out_fail:
1887 return -1; 1875 return -1;
1888} 1876}
1889 1877
1878size_t vmlinux_path__fprintf(FILE *fp)
1879{
1880 int i;
1881 size_t printed = 0;
1882
1883 for (i = 0; i < vmlinux_path__nr_entries; ++i)
1884 printed += fprintf(fp, "[%d] %s\n", i, vmlinux_path[i]);
1885
1886 return printed;
1887}
1888
1890static int setup_list(struct strlist **list, const char *list_str, 1889static int setup_list(struct strlist **list, const char *list_str,
1891 const char *list_name) 1890 const char *list_name)
1892{ 1891{