From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751964AbdBJHrd (ORCPT ); Fri, 10 Feb 2017 02:47:33 -0500 Received: from terminus.zytor.com ([65.50.211.136]:50902 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751927AbdBJHr3 (ORCPT ); Fri, 10 Feb 2017 02:47:29 -0500 Date: Thu, 9 Feb 2017 23:44:32 -0800 From: tip-bot for Victor Kamensky Message-ID: Cc: mingo@kernel.org, hpa@zytor.com, kan.liang@intel.com, hekuang@huawei.com, linux-kernel@vger.kernel.org, wangnan0@huawei.com, cphlipot0@gmail.com, tglx@linutronix.de, alexander.shishkin@linux.intel.com, acme@redhat.com, namhyung@kernel.org, dima@secretsauce.net, kamensky@cisco.com, adrian.hunter@intel.com, mhiramat@kernel.org, peterz@infradead.org Reply-To: linux-kernel@vger.kernel.org, wangnan0@huawei.com, mingo@kernel.org, hpa@zytor.com, kan.liang@intel.com, hekuang@huawei.com, kamensky@cisco.com, adrian.hunter@intel.com, mhiramat@kernel.org, peterz@infradead.org, cphlipot0@gmail.com, tglx@linutronix.de, acme@redhat.com, alexander.shishkin@linux.intel.com, namhyung@kernel.org, dima@secretsauce.net In-Reply-To: <1486424908-17094-1-git-send-email-kamensky@cisco.com> References: <1486424908-17094-1-git-send-email-kamensky@cisco.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf symbols: Take into account symfs setting when reading file build ID Git-Commit-ID: 9b200653518ea9ccc331b204c7d555d2440570d1 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 Commit-ID: 9b200653518ea9ccc331b204c7d555d2440570d1 Gitweb: http://git.kernel.org/tip/9b200653518ea9ccc331b204c7d555d2440570d1 Author: Victor Kamensky AuthorDate: Mon, 6 Feb 2017 15:48:28 -0800 Committer: Arnaldo Carvalho de Melo CommitDate: Wed, 8 Feb 2017 09:28:55 -0300 perf symbols: Take into account symfs setting when reading file build ID After commit 5baecbcd9c9a ("perf symbols: we can now read separate debug-info files based on a build ID") and when --symfs option is used perf failed to pick up symbols for file with the same name between host and sysroot specified by --symfs option. One can see message like this: bin/bash with build id 26f0062cb6950d4d1ab0fd9c43eae8b10ca42062 not found, continuing without symbols It happens because code added by 5baecbcd9c9a opens files directly by dso->long_name without symbol_conf.symfs consideration, which as result picks one from the host. It reads its build ID and later even code finds another proper file in directory pointed by --symfs perf ignores it because build id mismatches. Fix is to use __symbol__join_symfs to adjust file name according to --symfs setting. If no --symfs passed the operation would noop and picks the same host file as before. Also note in latter tree after 5baecbcd9c9a commit additional check for '!dso->has_build_id' was added, so to observe error condition 'perf record' should run with --no-buildid, so perf.data itself would not have build id for target binary in buildid perf section and 'perf report' will pass '!dso->has_build_id' condition. Or target binary should not have build id, but the same binary on host has build id, again '!dso->has_build_id' will pass in this case and incorrect build id could be read if --symfs is used. Signed-off-by: Victor Kamensky Cc: Adrian Hunter Cc: Alexander Shishkin Cc: Chris Phlipot Cc: Dima Kogan Cc: He Kuang Cc: Kan Liang Cc: Masami Hiramatsu Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Wang Nan Cc: xe-linux-external@cisco.com Fixes: 5baecbcd9c9a ("perf symbols: we can now read separate debug-info files based on a build ID") Link: http://lkml.kernel.org/r/1486424908-17094-1-git-send-email-kamensky@cisco.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/symbol.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index dc93940..70e389b 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -1460,9 +1460,11 @@ int dso__load(struct dso *dso, struct map *map) * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work */ if (!dso->has_build_id && - is_regular_file(dso->long_name) && - filename__read_build_id(dso->long_name, build_id, BUILD_ID_SIZE) > 0) + is_regular_file(dso->long_name)) { + __symbol__join_symfs(name, PATH_MAX, dso->long_name); + if (filename__read_build_id(name, build_id, BUILD_ID_SIZE) > 0) dso__set_build_id(dso, build_id); + } /* * Iterate over candidate debug images.