* [PATCH] perf tools: Fix bare address display value of callchain entries
@ 2014-12-12 10:14 Jiri Olsa
0 siblings, 0 replies; only message in thread
From: Jiri Olsa @ 2014-12-12 10:14 UTC (permalink / raw)
To: linux-kernel
Cc: Jiri Olsa, Andi Kleen, Arnaldo Carvalho de Melo, Corey Ashford,
David Ahern, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
Paul Mackerras, Peter Zijlstra
In case we don't have symbol to display we display bare
'unmapped' address. This was unintentionally changed in
recent commit:
5550171b2a9f perf callchain: Use al.addr to set up call chain
Putting the original way back.
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/util/callchain.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 64b377e591e4..a4fb25fb26f5 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -816,22 +816,30 @@ out:
char *callchain_list__sym_name(struct callchain_list *cl,
char *bf, size_t bfsize, bool show_dso)
{
+ struct map *map = cl->ms.map;
int printed;
if (cl->ms.sym) {
if (callchain_param.key == CCKEY_ADDRESS &&
- cl->ms.map && !cl->srcline)
- cl->srcline = get_srcline(cl->ms.map->dso,
- map__rip_2objdump(cl->ms.map,
- cl->ip),
+ map && !cl->srcline) {
+ cl->srcline = get_srcline(map->dso,
+ map__rip_2objdump(map, cl->ip),
cl->ms.sym, false);
+ }
if (cl->srcline)
printed = scnprintf(bf, bfsize, "%s %s",
cl->ms.sym->name, cl->srcline);
else
printed = scnprintf(bf, bfsize, "%s", cl->ms.sym->name);
- } else
- printed = scnprintf(bf, bfsize, "%#" PRIx64, cl->ip);
+ } else {
+ /*
+ * The cl->ip value is unbased ip (applied map->map_ip).
+ * Display the unmap ip in case we have no symbol.
+ */
+ u64 addr = map ? map->unmap_ip(map, cl->ip) : cl->ip;
+
+ printed = scnprintf(bf, bfsize, "%#" PRIx64, addr);
+ }
if (show_dso)
scnprintf(bf + printed, bfsize - printed, " %s",
--
1.9.3
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-12-12 10:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-12 10:14 [PATCH] perf tools: Fix bare address display value of callchain entries Jiri Olsa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome