Messages in this thread | | | Date | Fri, 10 Jul 2020 16:48:47 +0530 | From | Srikar Dronamraju <> | Subject | Re: [PATCH 1/4] perf-probe: Avoid setting probes on same address on same event |
| |
* 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"?
> + break; > + } > + if (i != j) > + continue; > +
Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
> tev = (*tevs) + ret; > tp = &tev->point; > if (ret == num_matched_functions) { >
-- Thanks and Regards Srikar Dronamraju
| |