From: Andi Kleen <andi@firstfloor.org>
To: jolsa@redhat.com
Cc: linux-kernel@vger.kernel.org, namhyung@kernel.org,
acme@kernel.org, Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 06/10] perf, tools: Enable printing the srcline in the history
Date: Wed, 12 Nov 2014 18:05:24 -0800 [thread overview]
Message-ID: <1415844328-4884-7-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1415844328-4884-1-git-send-email-andi@firstfloor.org>
From: Andi Kleen <ak@linux.intel.com>
For lbr-as-callgraph we need to see the line number in the history,
because many LBR entries can be in a single function, and just
showing the same function name many times is not useful.
When the history code is configured to sort by address, also try to
resolve the address to a file:srcline and display this in the browser.
If that doesn't work still display the address.
This can be also useful without LBRs for understanding which call in a large
function (or in which inlined function) called something else.
Contains fixes from Namhyung Kim
v2: Refactor code into common function
v3: Fix GTK build
v4: Rebase
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
tools/perf/util/callchain.c | 11 ++++++++++-
tools/perf/util/callchain.h | 1 +
tools/perf/util/srcline.c | 6 ++++--
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
index 10870c9..8046eb9 100644
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -819,7 +819,16 @@ char *callchain_list__sym_name(struct callchain_list *cl,
int printed;
if (cl->ms.sym) {
- printed = scnprintf(bf, bfsize, "%s", cl->ms.sym->name);
+ 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));
+ 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);
diff --git a/tools/perf/util/callchain.h b/tools/perf/util/callchain.h
index 5d5200c..dbc08cf 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -71,6 +71,7 @@ extern struct callchain_param callchain_param;
struct callchain_list {
u64 ip;
struct map_symbol ms;
+ char *srcline;
struct list_head list;
};
diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index f3e4bc5..c6a7cdc 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -258,7 +258,7 @@ char *get_srcline(struct dso *dso, unsigned long addr)
const char *dso_name;
if (!dso->has_srcline)
- return SRCLINE_UNKNOWN;
+ goto out;
if (dso->symsrc_filename)
dso_name = dso->symsrc_filename;
@@ -289,7 +289,9 @@ out:
dso->has_srcline = 0;
dso__free_a2l(dso);
}
- return SRCLINE_UNKNOWN;
+ if (asprintf(&srcline, "%s[%lx]", dso->short_name, addr) < 0)
+ return SRCLINE_UNKNOWN;
+ return srcline;
}
void free_srcline(char *srcline)
--
1.9.3
next prev parent reply other threads:[~2014-11-13 2:05 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 2:05 Implement lbr-as-callgraph v10 Andi Kleen
2014-11-13 2:05 ` [PATCH 01/10] perf, tools: Factor out adding new call chain entries Andi Kleen
2014-11-13 19:14 ` Arnaldo Carvalho de Melo
2014-11-20 7:37 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 02/10] perf, tools: Support handling complete branch stacks as histograms Andi Kleen
2014-11-13 19:14 ` Arnaldo Carvalho de Melo
2014-11-13 19:52 ` Andi Kleen
2014-11-13 20:08 ` Arnaldo Carvalho de Melo
2014-11-13 20:15 ` Andi Kleen
2014-11-13 20:42 ` Arnaldo Carvalho de Melo
2014-12-08 6:53 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 03/10] perf, tools: Use al.addr to set up call chain Andi Kleen
2014-11-13 19:16 ` Arnaldo Carvalho de Melo
2014-12-11 21:46 ` Jiri Olsa
2014-12-11 22:27 ` Andi Kleen
2014-11-20 7:38 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 04/10] perf, tools: Add --branch-history option to report Andi Kleen
2014-12-08 6:53 ` [tip:perf/core] perf report: Add --branch-history option tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 05/10] perf, tools: Use a common function to resolve symbol or name Andi Kleen
2014-11-13 19:17 ` Arnaldo Carvalho de Melo
2014-11-20 7:38 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` Andi Kleen [this message]
2014-11-13 19:20 ` [PATCH 06/10] perf, tools: Enable printing the srcline in the history Arnaldo Carvalho de Melo
2014-12-08 6:48 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 07/10] perf, tools: Only print base source file for srcline Andi Kleen
2014-11-13 19:22 ` Arnaldo Carvalho de Melo
2014-11-20 7:38 ` [tip:perf/core] perf " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 08/10] perf, tools: Support source line numbers in annotate Andi Kleen
2014-11-13 20:52 ` Arnaldo Carvalho de Melo
2014-11-20 7:39 ` [tip:perf/core] perf annotate: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 09/10] tools, perf: Make get_srcline fall back to sym+offset Andi Kleen
2014-12-08 6:49 ` [tip:perf/core] perf callchain: " tip-bot for Andi Kleen
2014-11-13 2:05 ` [PATCH 10/10] tools, perf: Add asprintf replacement Andi Kleen
2014-11-13 20:53 ` Arnaldo Carvalho de Melo
2014-11-13 21:14 ` Andi Kleen
2014-11-17 21:34 ` Implement lbr-as-callgraph v10 Arnaldo Carvalho de Melo
2014-11-18 1:56 ` Andi Kleen
2014-11-18 10:44 ` Jiri Olsa
2014-11-18 11:00 ` Jiri Olsa
2014-11-18 13:37 ` Arnaldo Carvalho de Melo
2014-11-19 15:31 ` Andi Kleen
2014-11-19 6:21 ` Namhyung Kim
2014-11-19 9:23 ` Jiri Olsa
2014-11-19 10:54 ` Jiri Olsa
2014-11-19 14:10 ` Arnaldo Carvalho de Melo
2014-11-19 16:04 ` Arnaldo Carvalho de Melo
2014-11-19 21:48 ` Andi Kleen
2014-11-20 19:33 ` Arnaldo Carvalho de Melo
2014-11-20 20:46 ` Andi Kleen
2014-11-21 20:30 ` Arnaldo Carvalho de Melo
2014-11-22 1:25 ` Andi Kleen
2014-11-24 7:40 ` Namhyung Kim
2014-11-19 21:50 ` Andi Kleen
2014-11-20 20:36 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1415844328-4884-7-git-send-email-andi@firstfloor.org \
--to=andi@firstfloor.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).