diff options
Diffstat (limited to 'tools/perf/util/callchain.c')
-rw-r--r-- | tools/perf/util/callchain.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index 38da69c8c1ff..b6624aeaaca9 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c | |||
@@ -815,7 +815,16 @@ char *callchain_list__sym_name(struct callchain_list *cl, | |||
815 | int printed; | 815 | int printed; |
816 | 816 | ||
817 | if (cl->ms.sym) { | 817 | if (cl->ms.sym) { |
818 | printed = scnprintf(bf, bfsize, "%s", cl->ms.sym->name); | 818 | if (callchain_param.key == CCKEY_ADDRESS && |
819 | cl->ms.map && !cl->srcline) | ||
820 | cl->srcline = get_srcline(cl->ms.map->dso, | ||
821 | map__rip_2objdump(cl->ms.map, | ||
822 | cl->ip)); | ||
823 | if (cl->srcline) | ||
824 | printed = scnprintf(bf, bfsize, "%s %s", | ||
825 | cl->ms.sym->name, cl->srcline); | ||
826 | else | ||
827 | printed = scnprintf(bf, bfsize, "%s", cl->ms.sym->name); | ||
819 | } else | 828 | } else |
820 | printed = scnprintf(bf, bfsize, "%#" PRIx64, cl->ip); | 829 | printed = scnprintf(bf, bfsize, "%#" PRIx64, cl->ip); |
821 | 830 | ||