From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932307AbcFBGf2 (ORCPT ); Thu, 2 Jun 2016 02:35:28 -0400 Received: from terminus.zytor.com ([198.137.202.10]:56006 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932080AbcFBGfZ (ORCPT ); Thu, 2 Jun 2016 02:35:25 -0400 Date: Wed, 1 Jun 2016 23:34:49 -0700 From: tip-bot for Masami Hiramatsu Message-ID: Cc: mhiramat@kernel.org, linux-kernel@vger.kernel.org, hpa@zytor.com, namhyung@kernel.org, ananth@linux.vnet.ibm.com, hemant@linux.vnet.ibm.com, peterz@infradead.org, brendan.d.gregg@gmail.com, acme@redhat.com, mingo@kernel.org, tglx@linutronix.de Reply-To: brendan.d.gregg@gmail.com, peterz@infradead.org, hemant@linux.vnet.ibm.com, tglx@linutronix.de, acme@redhat.com, mingo@kernel.org, namhyung@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org, mhiramat@kernel.org, ananth@linux.vnet.ibm.com In-Reply-To: <20160528151522.16098.43446.stgit@devbox> References: <20160528151522.16098.43446.stgit@devbox> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf symbols: Cleanup the code flow of dso__find_kallsyms Git-Commit-ID: 4e4b6c0668dcd907a36d281802beafa96c916548 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: 4e4b6c0668dcd907a36d281802beafa96c916548 Gitweb: http://git.kernel.org/tip/4e4b6c0668dcd907a36d281802beafa96c916548 Author: Masami Hiramatsu AuthorDate: Sun, 29 May 2016 00:15:28 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Mon, 30 May 2016 13:15:02 -0300 perf symbols: Cleanup the code flow of dso__find_kallsyms Cleanup the code flow of dso__find_kallsyms() to remove redundant checking code and add some comment for readability. Signed-off-by: Masami Hiramatsu Acked-by: Namhyung Kim Cc: Ananth N Mavinakayanahalli Cc: Brendan Gregg Cc: Hemant Kumar Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/20160528151522.16098.43446.stgit@devbox Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/symbol.c | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index a469346..1df6092 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -1674,21 +1674,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map) sizeof(host_build_id)) == 0) is_host = dso__build_id_equal(dso, host_build_id); - build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id); - - scnprintf(path, sizeof(path), "%s/%s/%s", buildid_dir, - DSO__NAME_KCORE, sbuild_id); - - /* Use /proc/kallsyms if possible */ + /* Try a fast path for /proc/kallsyms if possible */ if (is_host) { - DIR *d; - - /* If no cached kcore go with /proc/kallsyms */ - d = opendir(path); - if (!d) - goto proc_kallsyms; - closedir(d); - /* * Do not check the build-id cache, unless we know we cannot use * /proc/kcore or module maps don't match to /proc/kallsyms. @@ -1699,18 +1686,24 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map) if (filename__readable("/proc/kcore") && !validate_kcore_addresses("/proc/kallsyms", map)) goto proc_kallsyms; - - /* Find kallsyms in build-id cache with kcore */ - if (!find_matching_kcore(map, path, sizeof(path))) - return strdup(path); - - goto proc_kallsyms; } + build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id); + /* Find kallsyms in build-id cache with kcore */ + scnprintf(path, sizeof(path), "%s/%s/%s", + buildid_dir, DSO__NAME_KCORE, sbuild_id); + if (!find_matching_kcore(map, path, sizeof(path))) return strdup(path); + /* Use current /proc/kallsyms if possible */ + if (is_host) { +proc_kallsyms: + return strdup("/proc/kallsyms"); + } + + /* Finally, find a cache of kallsyms */ scnprintf(path, sizeof(path), "%s/%s/%s", buildid_dir, DSO__NAME_KALLSYMS, sbuild_id); @@ -1721,9 +1714,6 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map) } return strdup(path); - -proc_kallsyms: - return strdup("/proc/kallsyms"); } static int dso__load_kernel_sym(struct dso *dso, struct map *map,