Messages in this thread Patch in this message | | | From | Sukadev Bhattiprolu <> | Subject | [PATCH 3/3] tools/perf: Fix error reporting | Date | Thu, 2 Oct 2014 17:53:36 -0700 |
| |
If user explicitly specifies a vmlinux or kallsyms file on the command line and the specified file doesn't yield any symbols, print a warning message.
$ perf report -kallsyms No kernel symbols in the vmlinux 'allsyms'? Failed to load symbols for DSO [kernel.kallsyms], continuing without symbols
This could help user better recognize the typo -kallsyms v. --kallsyms. It would also help if the user points to a stripped/invalid vmlinux or an invalid kallsyms.
With a stripped vmlinux:
$ perf report -k /tmp/vmlinux No kernel symbols in the vmlinux '/tmp/vmlinux'? Failed to load symbols for DSO [kernel.kallsyms], continuing without symbols
and with perf top
$ perf top -k /tmp/vmlinux No kernel symbols in the vmlinux '/tmp/vmlinux'? /tmp/vmlinux with build id f43f4e78d3afac6492dcae52cd756394247997d6 not found, continuing without symbols
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> --- tools/perf/util/symbol.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 9b66e27..ad5baa4 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -1658,8 +1658,13 @@ static int dso__load_kernel_sym(struct dso *dso, struct map *map, } if (!symbol_conf.ignore_vmlinux && symbol_conf.vmlinux_name != NULL) { - return dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, + nsyms = dso__load_vmlinux(dso, map, symbol_conf.vmlinux_name, false, filter); + if (nsyms <= 0) { + pr_warning("No kernel symbols in the vmlinux '%s'?\n", + symbol_conf.vmlinux_name); + } + return nsyms; } if (!symbol_conf.ignore_vmlinux && vmlinux_path != NULL) { @@ -1682,6 +1687,10 @@ do_kallsyms: nsyms = dso__load_kallsyms(dso, kallsyms_filename, map, filter); if (nsyms > 0) pr_debug("Using %s for symbols\n", kallsyms_filename); + else if (symbol_conf.kallsyms_name) { + pr_warning("No kernel symbols in the kallsyms '%s'?\n", + kallsyms_filename); + } free(kallsyms_allocated_filename); if (nsyms > 0 && !dso__is_kcore(dso)) { -- 1.8.3.1
| |