|
@@ -374,16 +374,23 @@ static int __cmd_report(struct perf_report *rep)
|
|
|
(kernel_map->dso->hit &&
|
|
|
(kernel_kmap->ref_reloc_sym == NULL ||
|
|
|
kernel_kmap->ref_reloc_sym->addr == 0))) {
|
|
|
- const struct dso *kdso = kernel_map->dso;
|
|
|
+ const char *desc =
|
|
|
+ "As no suitable kallsyms nor vmlinux was found, kernel samples\n"
|
|
|
+ "can't be resolved.";
|
|
|
+
|
|
|
+ if (kernel_map) {
|
|
|
+ const struct dso *kdso = kernel_map->dso;
|
|
|
+ if (!RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION])) {
|
|
|
+ desc = "If some relocation was applied (e.g. "
|
|
|
+ "kexec) symbols may be misresolved.";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
ui__warning(
|
|
|
"Kernel address maps (/proc/{kallsyms,modules}) were restricted.\n\n"
|
|
|
"Check /proc/sys/kernel/kptr_restrict before running 'perf record'.\n\n%s\n\n"
|
|
|
"Samples in kernel modules can't be resolved as well.\n\n",
|
|
|
- RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION]) ?
|
|
|
-"As no suitable kallsyms nor vmlinux was found, kernel samples\n"
|
|
|
-"can't be resolved." :
|
|
|
-"If some relocation was applied (e.g. kexec) symbols may be misresolved.");
|
|
|
+ desc);
|
|
|
}
|
|
|
|
|
|
if (dump_trace) {
|