Messages in this thread | | | Date | Fri, 10 Jul 2020 21:14:47 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH 1/4] perf-probe: Avoid setting probes on same address on same event |
| |
On Fri, 10 Jul 2020 16:48:47 +0530 Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote:
> * Masami Hiramatsu <mhiramat@kernel.org> [2020-07-09 17:07:01]: > > > There is a case that the several same-name symbols points > > same address. In that case, perf probe returns an error. > > > > E.g. > > > > With this patch; > > > > # perf probe -x /lib64/libc-2.30.so -a "memcpy arg1=%di" > > Failed to find the location of the '%di' variable at this address. > > Perhaps it has been optimized out. > > Use -V with the --range option to show '%di' location range. > > Added new events: > > probe_libc:memcpy (on memcpy in /usr/lib64/libc-2.30.so with arg1=%di) > > probe_libc:memcpy (on memcpy in /usr/lib64/libc-2.30.so with arg1=%di) > > > > You can now use it in all perf tools, such as: > > > > perf record -e probe_libc:memcpy -aR sleep 1 > > > > > > Reported-by: Andi Kleen <andi@firstfloor.org> > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> > > One small nit: > > > --- > > tools/perf/util/probe-event.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > > index df713a5d1e26..1e95a336862c 100644 > > --- a/tools/perf/util/probe-event.c > > +++ b/tools/perf/util/probe-event.c > > @@ -2968,6 +2968,15 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev, > > for (j = 0; j < num_matched_functions; j++) { > > sym = syms[j]; > > > > + /* There can be duplicated symbols in the map */ > > + for (i = 0; i < j; i++) > > + if (sym->start == syms[i]->start) { > > + pr_debug("find duplicated symbol %s @ %lx\n", sym->name, sym->start); > > Would "Found" sound better than "find"?
OK.
> > > + break; > > + } > > + if (i != j) > > + continue; > > + > > Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Thank you!
> > > > tev = (*tevs) + ret; > > tp = &tev->point; > > if (ret == num_matched_functions) { > > > > -- > Thanks and Regards > Srikar Dronamraju
-- Masami Hiramatsu <mhiramat@kernel.org>
| |