From: Borislav Petkov <bp@suse.de>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>, Don Zickus <dzickus@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Namhyung Kim <namhyung@kernel.org>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 14/25] perf symbols: Save DSO loading errno to better report errors
Date: Fri, 27 Mar 2015 11:32:43 +0100 [thread overview]
Message-ID: <20150327103243.GA18931@pd.tnic> (raw)
In-Reply-To: <1427213980-9015-15-git-send-email-acme@kernel.org>
On Tue, Mar 24, 2015 at 01:19:29PM -0300, Arnaldo Carvalho de Melo wrote:
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> Before, when some problem happened while trying to load the kernel
> symtab, 'perf top' would show:
>
> ┌─Warning:───────────────────────────┐
> │The vmlinux file can't be used. │
> │Kernel samples will not be resolved.│
> │ │
> │ │
> │Press any key... │
> └────────────────────────────────────┘
>
> Now, it reports:
>
> # perf top --vmlinux /dev/null
>
> ┌─Warning:───────────────────────────────────────────┐
> │The /tmp/passwd file can't be used: Invalid ELF file│
> │Kernel samples will not be resolved. │
> │ │
> │ │
> │Press any key... │
> └────────────────────────────────────────────────────┘
>
> This is possible because we now register the reason for not being able
> to load the symtab in the dso->load_errno member, and provide a
> dso__strerror_load() routine to format this error into a strerror like
> string with a short reason for the error while loading.
>
> That can be just forwarding the dso__strerror_load() call to
> strerror_r(), or, for a separate errno range providing a custom message.
>
> Reported-by: Ingo Molnar <mingo@kernel.org>
> Acked-by: Jiri Olsa <jolsa@kernel.org>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: David Ahern <dsahern@gmail.com>
> Cc: Don Zickus <dzickus@redhat.com>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Stephane Eranian <eranian@google.com>
> Link: http://lkml.kernel.org/n/tip-u5rb5uq63xqhkfb8uv2lxd5u@git.kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
...
> @@ -1137,3 +1137,36 @@ enum dso_type dso__type(struct dso *dso, struct machine *machine)
>
> return dso__type_fd(fd);
> }
> +
> +int dso__strerror_load(struct dso *dso, char *buf, size_t buflen)
> +{
> + int idx, errnum = dso->load_errno;
> + /*
> + * This must have a same ordering as the enum dso_load_errno.
> + */
> + static const char *dso_load__error_str[] = {
> + "Internal tools/perf/ library error",
> + "Invalid ELF file",
> + "Can not read build id",
> + "Mismatching build id",
> + "Decompression failure",
> + };
You could define this str array by using the dso_load_errno defines so
that they're always in sync:
static const char *dso_load__error_str[] = {
[DSO_LOAD_ERRNO__INTERNAL_ERROR - __DSO_LOAD_ERRNO__START] = "Internal tools/perf/ library error",
[DSO_LOAD_ERRNO__INVALID_ELF - __DSO_LOAD_ERRNO__START] = "Invalid ELF file",
...
and even use a small macro to hide the __DSO_LOAD_ERRNO__START thing.
--
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--
next prev parent reply other threads:[~2015-03-27 10:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-24 16:19 [GIT PULL 00/25] perf/core improvements and fixes Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 01/25] perf tools: Use kmod_path__parse in map_groups__set_modules_path_dir Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 02/25] perf tools: Use kmod_path__parse in decompress_kmodule Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 03/25] perf tools: Use kmod_path__parse in is_kernel_module Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 04/25] perf tools: Remove compressed argument from is_kernel_module Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 05/25] perf tools: Remove is_kmodule_extension function Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 06/25] perf tools: Try to lookup kernel module map before creating one Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 07/25] perf annotate: Allow annotation for decompressed kernel modules Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 08/25] perf tools: Remove (null) value of "Sort order" for perf mem report Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 09/25] perf probe: Fix to get ummapped symbol address on kernel Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 10/25] tools lib traceevent: Factor out allocating and processing args Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 11/25] perf kmem: Print big numbers using thousands' group Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 13/25] perf target: Simplify handling of strerror_r return Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 14/25] perf symbols: Save DSO loading errno to better report errors Arnaldo Carvalho de Melo
2015-03-27 10:32 ` Borislav Petkov [this message]
2015-03-27 14:37 ` Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 15/25] tools lib traceevent: Handle NULL comm name Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 16/25] tools lib traceevent: Copy trace_clock and free it Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 17/25] tools lib traceevent: Handle %z in bprint format Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 18/25] tools lib traceevent: Add pevent_data_pid_from_comm() Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 19/25] tools lib traceevent: Make plugin options either string or boolean Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 21/25] tools lib traceevent: Add way to find sub buffer boundary Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 22/25] tools lib traceevent: Free filter tokens in process_filter() Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 23/25] tools lib traceevent: Add support for __print_array() Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 24/25] perf diff: Add kallsyms option Arnaldo Carvalho de Melo
2015-03-24 16:19 ` [PATCH 25/25] perf tools: Add pid/tid filtering to report and script commands Arnaldo Carvalho de Melo
2015-03-24 16:26 ` [GIT PULL 00/25] perf/core improvements and fixes Ingo Molnar
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=20150327103243.GA18931@pd.tnic \
--to=bp@suse.de \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=dzickus@redhat.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.