From: tip-bot for Andi Kleen <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: hpa@zytor.com, namhyung@kernel.org, jolsa@redhat.com,
acme@redhat.com, tglx@linutronix.de, ak@linux.intel.com,
linux-kernel@vger.kernel.org, mingo@kernel.org
Subject: [tip:perf/core] perf callchain: Enable printing the srcline in the history
Date: Sun, 7 Dec 2014 22:48:59 -0800 [thread overview]
Message-ID: <tip-23f0981bbd89fcc1496d0490ec39ca7c91599e32@git.kernel.org> (raw)
In-Reply-To: <1415844328-4884-7-git-send-email-andi@firstfloor.org>
Commit-ID: 23f0981bbd89fcc1496d0490ec39ca7c91599e32
Gitweb: http://git.kernel.org/tip/23f0981bbd89fcc1496d0490ec39ca7c91599e32
Author: Andi Kleen <ak@linux.intel.com>
AuthorDate: Wed, 12 Nov 2014 18:05:24 -0800
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 24 Nov 2014 18:03:46 -0300
perf callchain: Enable printing the srcline in the history
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>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1415844328-4884-7-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 38da69c..b6624ae 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,
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 3e1ed15..3f15847 100644
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -70,6 +70,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 77c1806..ac877f9 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)
next prev parent reply other threads:[~2014-12-08 6:49 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 ` [PATCH 06/10] perf, tools: Enable printing the srcline in the history Andi Kleen
2014-11-13 19:20 ` Arnaldo Carvalho de Melo
2014-12-08 6:48 ` tip-bot for Andi Kleen [this message]
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=tip-23f0981bbd89fcc1496d0490ec39ca7c91599e32@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=tglx@linutronix.de \
/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).