From: "tip-bot2 for Masami Hiramatsu" <tip-bot2@linutronix.de> To: linux-tip-commits@vger.kernel.org Cc: Masami Hiramatsu <mhiramat@kernel.org>, Arnaldo Carvalho de Melo <acme@redhat.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, Ingo Molnar <mingo@kernel.org>, Borislav Petkov <bp@alien8.de>, linux-kernel@vger.kernel.org Subject: [tip: perf/core] perf probe: Skip overlapped location on searching variables Date: Tue, 12 Nov 2019 11:17:52 -0000 [thread overview] Message-ID: <157355747242.29376.1305190875966623515.tip-bot2@tip-bot2> (raw) In-Reply-To: <157241938927.32002.4026859017790562751.stgit@devnote2> The following commit has been merged into the perf/core branch of tip: Commit-ID: dee36a2abb67c175265d49b9a8c7dfa564463d9a Gitweb: https://git.kernel.org/tip/dee36a2abb67c175265d49b9a8c7dfa564463d9a Author: Masami Hiramatsu <mhiramat@kernel.org> AuthorDate: Wed, 30 Oct 2019 16:09:49 +09:00 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitterDate: Thu, 07 Nov 2019 08:30:19 -03:00 perf probe: Skip overlapped location on searching variables Since debuginfo__find_probes() callback function can be called with the location which already passed, the callback function must filter out such overlapped locations. add_probe_trace_event() has already done it by commit 1a375ae7659a ("perf probe: Skip same probe address for a given line"), but add_available_vars() doesn't. Thus perf probe -v shows same address repeatedly as below: # perf probe -V vfs_read:18 Available variables at vfs_read:18 @<vfs_read+217> char* buf loff_t* pos ssize_t ret struct file* file @<vfs_read+217> char* buf loff_t* pos ssize_t ret struct file* file @<vfs_read+226> char* buf loff_t* pos ssize_t ret struct file* file With this fix, perf probe -V shows it correctly: # perf probe -V vfs_read:18 Available variables at vfs_read:18 @<vfs_read+217> char* buf loff_t* pos ssize_t ret struct file* file @<vfs_read+226> char* buf loff_t* pos ssize_t ret struct file* file Fixes: cf6eb489e5c0 ("perf probe: Show accessible local variables") Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lore.kernel.org/lkml/157241938927.32002.4026859017790562751.stgit@devnote2 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/probe-finder.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 582f8c3..9ecea45 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c @@ -1428,6 +1428,18 @@ error: return DIE_FIND_CB_END; } +static bool available_var_finder_overlap(struct available_var_finder *af) +{ + int i; + + for (i = 0; i < af->nvls; i++) { + if (af->pf.addr == af->vls[i].point.address) + return true; + } + return false; + +} + /* Add a found vars into available variables list */ static int add_available_vars(Dwarf_Die *sc_die, struct probe_finder *pf) { @@ -1438,6 +1450,14 @@ static int add_available_vars(Dwarf_Die *sc_die, struct probe_finder *pf) Dwarf_Die die_mem; int ret; + /* + * For some reason (e.g. different column assigned to same address), + * this callback can be called with the address which already passed. + * Ignore it first. + */ + if (available_var_finder_overlap(af)) + return 0; + /* Check number of tevs */ if (af->nvls == af->max_vls) { pr_warning("Too many( > %d) probe point found.\n", af->max_vls);
prev parent reply other threads:[~2019-11-12 11:22 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-30 7:09 [BUGFIX PATCH 0/4] perf probe: Fixes bugs in show-lines and show vars etc Masami Hiramatsu 2019-10-30 7:09 ` [BUGFIX PATCH 1/4] perf probe: Skip end-of-sequence and non statement lines Masami Hiramatsu 2019-11-06 20:04 ` Arnaldo Carvalho de Melo 2020-01-10 9:29 ` Rantala, Tommi T. (Nokia - FI/Espoo) 2020-01-10 15:43 ` Masami Hiramatsu 2019-11-12 11:17 ` [tip: perf/core] " tip-bot2 for Masami Hiramatsu 2019-10-30 7:09 ` [BUGFIX PATCH 2/4] perf probe: Filter out instances except for inlined subroutine and subprogram Masami Hiramatsu 2019-11-06 20:06 ` Arnaldo Carvalho de Melo 2019-11-12 11:17 ` [tip: perf/core] " tip-bot2 for Masami Hiramatsu 2019-10-30 7:09 ` [BUGFIX PATCH 3/4] perf probe: Fix to show calling lines of inlined functions Masami Hiramatsu 2019-11-06 20:08 ` Arnaldo Carvalho de Melo 2019-11-12 11:17 ` [tip: perf/core] " tip-bot2 for Masami Hiramatsu 2019-10-30 7:09 ` [BUGFIX PATCH 4/4] perf probe: Skip overlapped location on searching variables Masami Hiramatsu 2019-11-06 20:09 ` Arnaldo Carvalho de Melo 2019-11-12 11:17 ` tip-bot2 for Masami Hiramatsu [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=157355747242.29376.1305190875966623515.tip-bot2@tip-bot2 \ --to=tip-bot2@linutronix.de \ --cc=acme@redhat.com \ --cc=bp@alien8.de \ --cc=jolsa@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-tip-commits@vger.kernel.org \ --cc=mhiramat@kernel.org \ --cc=mingo@kernel.org \ --cc=namhyung@kernel.org \ --subject='Re: [tip: perf/core] perf probe: Skip overlapped location on searching variables' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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.