perf symbols: Cleanup the code flow of dso__find_kallsyms
Cleanup the code flow of dso__find_kallsyms() to remove redundant checking code and add some comment for readability. Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Cc: Brendan Gregg <brendan.d.gregg@gmail.com> Cc: Hemant Kumar <hemant@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20160528151522.16098.43446.stgit@devbox Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
11870d714a
commit
4e4b6c0668
|
@ -1674,21 +1674,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
|
|||
sizeof(host_build_id)) == 0)
|
||||
is_host = dso__build_id_equal(dso, host_build_id);
|
||||
|
||||
build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id);
|
||||
|
||||
scnprintf(path, sizeof(path), "%s/%s/%s", buildid_dir,
|
||||
DSO__NAME_KCORE, sbuild_id);
|
||||
|
||||
/* Use /proc/kallsyms if possible */
|
||||
/* Try a fast path for /proc/kallsyms if possible */
|
||||
if (is_host) {
|
||||
DIR *d;
|
||||
|
||||
/* If no cached kcore go with /proc/kallsyms */
|
||||
d = opendir(path);
|
||||
if (!d)
|
||||
goto proc_kallsyms;
|
||||
closedir(d);
|
||||
|
||||
/*
|
||||
* Do not check the build-id cache, unless we know we cannot use
|
||||
* /proc/kcore or module maps don't match to /proc/kallsyms.
|
||||
|
@ -1699,18 +1686,24 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
|
|||
if (filename__readable("/proc/kcore") &&
|
||||
!validate_kcore_addresses("/proc/kallsyms", map))
|
||||
goto proc_kallsyms;
|
||||
|
||||
/* Find kallsyms in build-id cache with kcore */
|
||||
if (!find_matching_kcore(map, path, sizeof(path)))
|
||||
return strdup(path);
|
||||
|
||||
goto proc_kallsyms;
|
||||
}
|
||||
|
||||
build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id);
|
||||
|
||||
/* Find kallsyms in build-id cache with kcore */
|
||||
scnprintf(path, sizeof(path), "%s/%s/%s",
|
||||
buildid_dir, DSO__NAME_KCORE, sbuild_id);
|
||||
|
||||
if (!find_matching_kcore(map, path, sizeof(path)))
|
||||
return strdup(path);
|
||||
|
||||
/* Use current /proc/kallsyms if possible */
|
||||
if (is_host) {
|
||||
proc_kallsyms:
|
||||
return strdup("/proc/kallsyms");
|
||||
}
|
||||
|
||||
/* Finally, find a cache of kallsyms */
|
||||
scnprintf(path, sizeof(path), "%s/%s/%s",
|
||||
buildid_dir, DSO__NAME_KALLSYMS, sbuild_id);
|
||||
|
||||
|
@ -1721,9 +1714,6 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
|
|||
}
|
||||
|
||||
return strdup(path);
|
||||
|
||||
proc_kallsyms:
|
||||
return strdup("/proc/kallsyms");
|
||||
}
|
||||
|
||||
static int dso__load_kernel_sym(struct dso *dso, struct map *map,
|
||||
|
|
Loading…
Reference in a new issue