From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf auxtrace: Alter addr_filter__entire_dso() to work if there are no symbols
Date: Tue, 27 Nov 2018 09:42:26 -0300 [thread overview]
Message-ID: <20181127124226.GC15747@kernel.org> (raw)
In-Reply-To: <20181127084634.12469-1-adrian.hunter@intel.com>
Em Tue, Nov 27, 2018 at 10:46:34AM +0200, Adrian Hunter escreveu:
> addr_filter__entire_dso() uses the first and last symbols from a dso,
> and so does not work when there are no symbols. Alter it to filter the
> whole file instead.
I'm splitting this patch into a first prep one that renames and exports
the static function dso__data_file_size() and a second that does what
this commig log message states.
The reason is that sometimes we find out that the main part of the patch
is wrong and we then decide to revert the patch, only to realize that
the exported function is by that time already used elsewhere.
- Arnaldo
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> tools/perf/util/auxtrace.c | 11 ++++-------
> tools/perf/util/dso.c | 6 +++---
> tools/perf/util/dso.h | 1 +
> 3 files changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c
> index 72d5ba2479bf..f69961c4a4f3 100644
> --- a/tools/perf/util/auxtrace.c
> +++ b/tools/perf/util/auxtrace.c
> @@ -1983,17 +1983,14 @@ static int find_dso_sym(struct dso *dso, const char *sym_name, u64 *start,
>
> static int addr_filter__entire_dso(struct addr_filter *filt, struct dso *dso)
> {
> - struct symbol *first_sym = dso__first_symbol(dso);
> - struct symbol *last_sym = dso__last_symbol(dso);
> -
> - if (!first_sym || !last_sym) {
> - pr_err("Failed to determine filter for %s\nNo symbols found.\n",
> + if (dso__data_file_size(dso, NULL)) {
> + pr_err("Failed to determine filter for %s\nCannot determine file size.\n",
> filt->filename);
> return -EINVAL;
> }
>
> - filt->addr = first_sym->start;
> - filt->size = last_sym->end - first_sym->start;
> + filt->addr = 0;
> + filt->size = dso->data.file_size;
>
> return 0;
> }
> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> index bbed90e5d9bb..721f3d583945 100644
> --- a/tools/perf/util/dso.c
> +++ b/tools/perf/util/dso.c
> @@ -894,7 +894,7 @@ static ssize_t cached_read(struct dso *dso, struct machine *machine,
> return r;
> }
>
> -static int data_file_size(struct dso *dso, struct machine *machine)
> +int dso__data_file_size(struct dso *dso, struct machine *machine)
> {
> int ret = 0;
> struct stat st;
> @@ -943,7 +943,7 @@ static int data_file_size(struct dso *dso, struct machine *machine)
> */
> off_t dso__data_size(struct dso *dso, struct machine *machine)
> {
> - if (data_file_size(dso, machine))
> + if (dso__data_file_size(dso, machine))
> return -1;
>
> /* For now just estimate dso data size is close to file size */
> @@ -953,7 +953,7 @@ off_t dso__data_size(struct dso *dso, struct machine *machine)
> static ssize_t data_read_offset(struct dso *dso, struct machine *machine,
> u64 offset, u8 *data, ssize_t size)
> {
> - if (data_file_size(dso, machine))
> + if (dso__data_file_size(dso, machine))
> return -1;
>
> /* Check the offset sanity. */
> diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
> index c5380500bed4..8c8a7abe809d 100644
> --- a/tools/perf/util/dso.h
> +++ b/tools/perf/util/dso.h
> @@ -322,6 +322,7 @@ int dso__data_get_fd(struct dso *dso, struct machine *machine);
> void dso__data_put_fd(struct dso *dso);
> void dso__data_close(struct dso *dso);
>
> +int dso__data_file_size(struct dso *dso, struct machine *machine);
> off_t dso__data_size(struct dso *dso, struct machine *machine);
> ssize_t dso__data_read_offset(struct dso *dso, struct machine *machine,
> u64 offset, u8 *data, ssize_t size);
> --
> 2.17.1
--
- Arnaldo
next prev parent reply other threads:[~2018-11-27 12:42 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-27 8:46 [PATCH] perf auxtrace: Alter addr_filter__entire_dso() to work if there are no symbols Adrian Hunter
2018-11-27 12:42 ` Arnaldo Carvalho de Melo [this message]
2018-12-10 13:17 ` Adrian Hunter
2018-12-10 13:39 ` Arnaldo Carvalho de Melo
2018-12-20 17:57 ` [tip:perf/core] perf dso: Export data_file_size() method " tip-bot for Adrian Hunter
2018-12-20 17:58 ` [tip:perf/core] perf auxtrace: Alter addr_filter__entire_dso() to work if " tip-bot for Adrian Hunter
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=20181127124226.GC15747@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox