Messages in this thread |  | | From | Ian Rogers <> | Date | Thu, 2 Apr 2020 10:43:14 -0700 | Subject | Re: [PATCH] perf/script: allow --symbol to accept hexadecimal addresses |
| |
On Tue, Mar 31, 2020 at 12:11 PM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote: > > Em Wed, Mar 25, 2020 at 03:08:02PM -0700, Ian Rogers escreveu: > > From: Stephane Eranian <eranian@google.com> > > > > This patch extends the perf script --symbols option to filter > > on hexadecimal addresses in addition to symbol names. This makes > > it easier to handle cases where symbols are aliased. > > > > With this patch, it is possible to mix and match symbols and hexadecimal > > addresses using the --symbols option. > > > > $ perf script --symbols=noploop,0x4007a0 > > Applied, can you please send a followup patch to the man page stating > that this is supported?
Many thanks! I've sent: https://lore.kernel.org/lkml/20200402174130.140319-1-irogers@google.com/T/#u
Ian
> Thanks, > > - Arnaldo > > > Reviewed-by: Ian Rogers <irogers@google.com> > > Signed-off-by: Stephane Eranian <eranian@google.com> > > --- > > tools/perf/util/event.c | 21 +++++++++++++++++---- > > 1 file changed, 17 insertions(+), 4 deletions(-) > > > > diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c > > index c5447ff516a2..c978a73fe475 100644 > > --- a/tools/perf/util/event.c > > +++ b/tools/perf/util/event.c > > @@ -599,10 +599,23 @@ int machine__resolve(struct machine *machine, struct addr_location *al, > > al->sym = map__find_symbol(al->map, al->addr); > > } > > > > - if (symbol_conf.sym_list && > > - (!al->sym || !strlist__has_entry(symbol_conf.sym_list, > > - al->sym->name))) { > > - al->filtered |= (1 << HIST_FILTER__SYMBOL); > > + if (symbol_conf.sym_list) { > > + int ret = 0; > > + char al_addr_str[32]; > > + size_t sz = sizeof(al_addr_str); > > + > > + if (al->sym) { > > + ret = strlist__has_entry(symbol_conf.sym_list, > > + al->sym->name); > > + } > > + if (!(ret && al->sym)) { > > + snprintf(al_addr_str, sz, "0x%"PRIx64, > > + al->map->unmap_ip(al->map, al->sym->start)); > > + ret = strlist__has_entry(symbol_conf.sym_list, > > + al_addr_str); > > + } > > + if (!ret) > > + al->filtered |= (1 << HIST_FILTER__SYMBOL); > > } > > > > return 0; > > -- > > 2.25.1.696.g5e7596f4ac-goog > > > > -- > > - Arnaldo
|  |