From 533c46c31c0e82f19dbb087c77d85eaccd6fefdb Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Sat, 3 Apr 2010 11:54:35 -0300
Subject: [PATCH] perf newt: Pass the input_name to perf_session__browse_hists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

So that it can use it in the 'perf annotate' command line, otherwise
it'll use the default and not the specified -i filename passed to 'perf
report'.

Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-report.c |  3 ++-
 tools/perf/util/newt.c      | 13 ++++++++-----
 tools/perf/util/session.h   |  6 ++++--
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 6615e09e336f..e93c69a8e720 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -313,7 +313,8 @@ static int __cmd_report(void)
 						       stats->stats.total);
 		if (use_browser)
 			perf_session__browse_hists(&stats->hists, nr_hists,
-						   stats->stats.total, help);
+						   stats->stats.total, help,
+						   input_name);
 		else {
 			if (rb_first(&session->stats_by_id) ==
 			    rb_last(&session->stats_by_id))
diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c
index 509d921532ef..c93bc2a2d137 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/newt.c
@@ -317,7 +317,8 @@ static size_t hist_entry__append_browser(struct hist_entry *self,
 	return ret;
 }
 
-static void map_symbol__annotate_browser(const struct map_symbol *self)
+static void map_symbol__annotate_browser(const struct map_symbol *self,
+					 const char *input_name)
 {
 	FILE *fp;
 	int cols, rows;
@@ -331,8 +332,8 @@ static void map_symbol__annotate_browser(const struct map_symbol *self)
 	if (self->sym == NULL)
 		return;
 
-	if (asprintf(&str, "perf annotate -d \"%s\" %s 2>&1 | expand",
-		     self->map->dso->name, self->sym->name) < 0)
+	if (asprintf(&str, "perf annotate -i \"%s\" -d \"%s\" %s 2>&1 | expand",
+		     input_name, self->map->dso->name, self->sym->name) < 0)
 		return;
 
 	fp = popen(str, "r");
@@ -472,7 +473,8 @@ static int hist_browser__populate(struct hist_browser *self, struct rb_root *his
 }
 
 int perf_session__browse_hists(struct rb_root *hists, u64 nr_hists,
-			       u64 session_total, const char *helpline)
+			       u64 session_total, const char *helpline,
+			       const char *input_name)
 {
 	struct newtExitStruct es;
 	char str[1024];
@@ -527,7 +529,8 @@ int perf_session__browse_hists(struct rb_root *hists, u64 nr_hists,
 						 "kallsyms file");
 				continue;
 			}
-			map_symbol__annotate_browser(browser->selection);
+			map_symbol__annotate_browser(browser->selection,
+						     input_name);
 		}
 	}
 	err = 0;
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index dffaff52ba44..27f4c2dc715b 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -96,12 +96,14 @@ static inline struct map *
 static inline int perf_session__browse_hists(struct rb_root *hists __used,
 					      u64 nr_hists __used,
 					      u64 session_total __used,
-					      const char *helpline __used)
+					     const char *helpline __used,
+					     const char *input_name __used)
 {
 	return 0;
 }
 #else
 int perf_session__browse_hists(struct rb_root *hists, u64 nr_hists,
-				u64 session_total, const char *helpline);
+			       u64 session_total, const char *helpline,
+			       const char *input_name);
 #endif
 #endif /* __PERF_SESSION_H */
-- 
GitLab