perf tools: Fix annotation with kcore
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 11 Nov 2014 10:04:54 +0000 (12:04 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 19 Nov 2014 15:33:47 +0000 (12:33 -0300)
Patch "perf tools: Fix build-id matching on vmlinux" breaks annotation
with kcore.  The problem is that symbol__annotate() first gets the
filename based on the build-id which was previously not set.

This patch provides a quick fix, however there should probably be only
one way to determine the filename. e.g.  symbol__annotate() should use
the same way as dso__data_fd().

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1415700294-30816-1-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/annotate.c

index 7dabde14ea54ace4c0ca3e6e54c619640035f845..873c8778db20bd9acfe6842c5609d63b89278996 100644 (file)
@@ -915,6 +915,8 @@ int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)
                        return -ENOMEM;
                }
                goto fallback;
+       } else if (dso__is_kcore(dso)) {
+               goto fallback;
        } else if (readlink(symfs_filename, command, sizeof(command)) < 0 ||
                   strstr(command, "[kernel.kallsyms]") ||
                   access(symfs_filename, R_OK)) {