diff options
-rw-r--r-- | tools/perf/util/machine.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index ded74590b92f..290c2e6d4001 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c | |||
@@ -496,19 +496,22 @@ static int symbol__in_kernel(void *arg, const char *name, | |||
496 | return 1; | 496 | return 1; |
497 | } | 497 | } |
498 | 498 | ||
499 | static void machine__get_kallsyms_filename(struct machine *machine, char *buf, | ||
500 | size_t bufsz) | ||
501 | { | ||
502 | if (machine__is_default_guest(machine)) | ||
503 | scnprintf(buf, bufsz, "%s", symbol_conf.default_guest_kallsyms); | ||
504 | else | ||
505 | scnprintf(buf, bufsz, "%s/proc/kallsyms", machine->root_dir); | ||
506 | } | ||
507 | |||
499 | /* Figure out the start address of kernel map from /proc/kallsyms */ | 508 | /* Figure out the start address of kernel map from /proc/kallsyms */ |
500 | static u64 machine__get_kernel_start_addr(struct machine *machine) | 509 | static u64 machine__get_kernel_start_addr(struct machine *machine) |
501 | { | 510 | { |
502 | const char *filename; | 511 | char filename[PATH_MAX]; |
503 | char path[PATH_MAX]; | ||
504 | struct process_args args; | 512 | struct process_args args; |
505 | 513 | ||
506 | if (machine__is_default_guest(machine)) | 514 | machine__get_kallsyms_filename(machine, filename, PATH_MAX); |
507 | filename = (char *)symbol_conf.default_guest_kallsyms; | ||
508 | else { | ||
509 | sprintf(path, "%s/proc/kallsyms", machine->root_dir); | ||
510 | filename = path; | ||
511 | } | ||
512 | 515 | ||
513 | if (symbol__restricted_filename(filename, "/proc/kallsyms")) | 516 | if (symbol__restricted_filename(filename, "/proc/kallsyms")) |
514 | return 0; | 517 | return 0; |