perf tools: Fix output of symbol_daddr offset
Namhyung Kim [Thu, 24 Jan 2013 15:10:42 +0000 (16:10 +0100)]
The symbol addresses in a dso have relative offsets from the start of a
mapping.  So in order to ouput correct offset value from @ip, one of
them should be converted.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1359040242-8269-19-git-send-email-eranian@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

tools/perf/util/sort.c

index 32a1ef1..5f52d49 100644 (file)
@@ -202,7 +202,7 @@ static int _hist_entry__sym_snprintf(struct map *map, struct symbol *sym,
                if (map->type == MAP__VARIABLE) {
                        ret += repsep_snprintf(bf + ret, size - ret, "%s", sym->name);
                        ret += repsep_snprintf(bf + ret, size - ret, "+0x%llx",
-                                       ip - sym->start);
+                                       ip - map->unmap_ip(map, sym->start));
                        ret += repsep_snprintf(bf + ret, size - ret, "%-*s",
                                       width - ret, "");
                } else {