From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756418AbbCNHEV (ORCPT ); Sat, 14 Mar 2015 03:04:21 -0400 Received: from terminus.zytor.com ([198.137.202.10]:40215 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751194AbbCNHER (ORCPT ); Sat, 14 Mar 2015 03:04:17 -0400 Date: Sat, 14 Mar 2015 00:03:41 -0700 From: tip-bot for Namhyung Kim Message-ID: Cc: linux-kernel@vger.kernel.org, namhyung@kernel.org, hpa@zytor.com, naota@elisp.net, acme@redhat.com, tglx@linutronix.de, mingo@kernel.org, peterz@infradead.org, masami.hiramatsu.pt@hitachi.com, dsahern@gmail.com, jolsa@redhat.com Reply-To: acme@redhat.com, tglx@linutronix.de, namhyung@kernel.org, linux-kernel@vger.kernel.org, hpa@zytor.com, naota@elisp.net, jolsa@redhat.com, mingo@kernel.org, peterz@infradead.org, masami.hiramatsu.pt@hitachi.com, dsahern@gmail.com In-Reply-To: <20150306073129.6904.41078.stgit@localhost.localdomain> References: <20150306073129.6904.41078.stgit@localhost.localdomain> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf probe: Allow weak symbols to be probed Git-Commit-ID: e578da3b2009da2a9ae2d25fd0f78c7b76ca5e56 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: e578da3b2009da2a9ae2d25fd0f78c7b76ca5e56 Gitweb: http://git.kernel.org/tip/e578da3b2009da2a9ae2d25fd0f78c7b76ca5e56 Author: Namhyung Kim AuthorDate: Fri, 6 Mar 2015 16:31:29 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Thu, 12 Mar 2015 12:39:55 -0300 perf probe: Allow weak symbols to be probed It currently prevents adding probes in weak symbols. But there're cases that given name is an only weak symbol so that we cannot add probe. $ perf probe -x /usr/lib/libc.so.6 -a calloc Failed to find symbol calloc in /usr/lib/libc-2.21.so Error: Failed to add events. $ nm /usr/lib/libc.so.6 | grep calloc 000000000007b1f0 t __calloc 000000000007b1f0 T __libc_calloc 000000000007b1f0 W calloc This change will result in duplicate probes when strong and weak symbols co-exist in a binary. But I think it's not a big problem since probes at the weak symbol will never be hit anyway. Signed-off-by: Namhyung Kim Tested-by: Arnaldo Carvalho de Melo Cc: David Ahern Cc: Jiri Olsa Cc: Naohiro Aota Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/20150306073129.6904.41078.stgit@localhost.localdomain Signed-off-by: Masami Hiramatsu Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/probe-event.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 9feba0e..8af8e7f 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -310,10 +310,8 @@ static int find_alternative_probe_point(struct debuginfo *dinfo, /* Find the address of given function */ map__for_each_symbol_by_name(map, pp->function, sym) { - if (sym->binding == STB_GLOBAL || sym->binding == STB_LOCAL) { - address = sym->start; - break; - } + address = sym->start; + break; } if (!address) { ret = -ENOENT; @@ -2485,8 +2483,7 @@ static int find_probe_functions(struct map *map, char *name) struct symbol *sym; map__for_each_symbol_by_name(map, name, sym) { - if (sym->binding == STB_GLOBAL || sym->binding == STB_LOCAL) - found++; + found++; } return found; @@ -2846,8 +2843,7 @@ static struct strfilter *available_func_filter; static int filter_available_functions(struct map *map __maybe_unused, struct symbol *sym) { - if ((sym->binding == STB_GLOBAL || sym->binding == STB_LOCAL) && - strfilter__compare(available_func_filter, sym->name)) + if (strfilter__compare(available_func_filter, sym->name)) return 0; return 1; }