Skip to content

Commit

Permalink
perf symbols: Cleanup the code flow of dso__find_kallsyms
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Masami Hiramatsu authored and Arnaldo Carvalho de Melo committed May 30, 2016
1 parent 11870d7 commit 4e4b6c0
Showing 1 changed file with 13 additions and 23 deletions.
36 changes: 13 additions & 23 deletions tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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);

Expand All @@ -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,
Expand Down

0 comments on commit 4e4b6c0

Please sign in to comment.