All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf report: Fix sort__sym_cmp to also compare end of symbol
@ 2015-06-17 23:41 Yannick Brosseau
  2015-06-17 23:53 ` Jeff Epler
  2015-06-19 23:18 ` [tip:perf/core] " tip-bot for Yannick Brosseau
  0 siblings, 2 replies; 5+ messages in thread
From: Yannick Brosseau @ 2015-06-17 23:41 UTC (permalink / raw)
  To: acme, mingo, paulus, a.p.zijlstra, jolsa, ak
  Cc: linux-kernel, kernel-team, Yannick Brosseau

When using a map file from a JIT, due to memory reuse, we can
obtain multiple symbols with the same start address but a different
length.
The symbols__find does check for the end so not doing it in sort__sym_cmp
was causing the hist_entry in the annotate part of a report to match to the
wrong entry, causing a fatal error.

Signed-off-by: Yannick Brosseau <scientist@fb.com>
---
 tools/perf/util/sort.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 4593f36..e226118 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -182,18 +182,16 @@ static int64_t _sort__addr_cmp(u64 left_ip, u64 right_ip)
 
 static int64_t _sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r)
 {
-	u64 ip_l, ip_r;
-
 	if (!sym_l || !sym_r)
 		return cmp_null(sym_l, sym_r);
 
 	if (sym_l == sym_r)
 		return 0;
 
-	ip_l = sym_l->start;
-	ip_r = sym_r->start;
+	if (sym_l->start != sym_r->start)
+		return (int64_t)(sym_r->start - sym_l->start);
 
-	return (int64_t)(ip_r - ip_l);
+	return (int64_t)(sym_r->end - sym_l->end);
 }
 
 static int64_t
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-06-19 23:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-17 23:41 [PATCH] perf report: Fix sort__sym_cmp to also compare end of symbol Yannick Brosseau
2015-06-17 23:53 ` Jeff Epler
2015-06-17 23:55   ` Yannick Brosseau
2015-06-19 21:14     ` Arnaldo Carvalho de Melo
2015-06-19 23:18 ` [tip:perf/core] " tip-bot for Yannick Brosseau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.