Re: [PATCH] perf auxtrace: Improve address filter error message when there is no DSO

From: Arnaldo Carvalho de Melo
Date: Fri Mar 01 2019 - 12:48:04 EST


Em Fri, Mar 01, 2019 at 02:29:02PM +0200, Adrian Hunter escreveu:
> The message does not indicate the possibility that the symbol is not
> found because the file does not exist.
>
> Before:
>
> $ perf record -e intel_pt//u --filter 'filter strcmp / strcpy @ foo ' ls
> Symbol 'strcmp' not found.
> Note that symbols must be functions.
> Failed to parse address filter: 'filter strcmp / strcpy @ foo '
> Filter format is: filter|start|stop|tracestop <start symbol or address> [/ <end symbol or size>] [@<file name>]
> Where multiple filters are separated by space or comma.
>
> After:
>
> $ perf record -e intel_pt//u --filter 'filter strcmp / strcpy @ foo ' ls
> File 'foo' not found or has no symbols.
> Symbol 'strcmp' not found.
> Note that symbols must be functions.
> Failed to parse address filter: 'filter strcmp / strcpy @ foo '
> Filter format is: filter|start|stop|tracestop <start symbol or address> [/ <end symbol or size>] [@<file name>]
> Where multiple filters are separated by space or comma.

Thanks, applied.

- Arnaldo

> Reported-by: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> ---
> tools/perf/util/auxtrace.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
> index 267e54df511b..fb76b6b232d4 100644
> --- a/tools/perf/util/auxtrace.c
> +++ b/tools/perf/util/auxtrace.c
> @@ -1918,7 +1918,8 @@ static struct dso *load_dso(const char *name)
> if (!map)
> return NULL;
>
> - map__load(map);
> + if (map__load(map) < 0)
> + pr_err("File '%s' not found or has no symbols.\n", name);
>
> dso = dso__get(map->dso);
>
> --
> 2.17.1

--

- Arnaldo