Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932326AbbFSXSf (ORCPT ); Fri, 19 Jun 2015 19:18:35 -0400 Received: from terminus.zytor.com ([198.137.202.10]:52822 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754702AbbFSXS1 (ORCPT ); Fri, 19 Jun 2015 19:18:27 -0400 Date: Fri, 19 Jun 2015 16:18:01 -0700 From: tip-bot for Yannick Brosseau Message-ID: Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de, jolsa@kernel.org, paulus@samba.org, scientist@fb.com, mingo@kernel.org, a.p.zijlstra@chello.nl, acme@redhat.com, ak@linux.intel.com, hpa@zytor.com Reply-To: a.p.zijlstra@chello.nl, acme@redhat.com, ak@linux.intel.com, hpa@zytor.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, jolsa@kernel.org, paulus@samba.org, scientist@fb.com, mingo@kernel.org In-Reply-To: <1434584470-17771-1-git-send-email-scientist@fb.com> References: <1434584470-17771-1-git-send-email-scientist@fb.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf report: Fix sort__sym_cmp to also compare end of symbol Git-Commit-ID: c05676c06232e6459a6106ddf0d4e154ce6cd859 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1954 Lines: 57 Commit-ID: c05676c06232e6459a6106ddf0d4e154ce6cd859 Gitweb: http://git.kernel.org/tip/c05676c06232e6459a6106ddf0d4e154ce6cd859 Author: Yannick Brosseau AuthorDate: Wed, 17 Jun 2015 16:41:10 -0700 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 19 Jun 2015 18:14:05 -0300 perf report: Fix sort__sym_cmp to also compare end of symbol 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 Cc: Andi Kleen Cc: Jiri Olsa Cc: Paul Mackerras Cc: Peter Zijlstra Cc: kernel-team@fb.com Link: http://lkml.kernel.org/r/1434584470-17771-1-git-send-email-scientist@fb.com Signed-off-by: Arnaldo Carvalho de Melo --- 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 09d4696..4c65a14 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/