Re: [PATCH perf/core v7 03/21] perf buildid: Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE

From: Arnaldo Carvalho de Melo
Date: Wed May 11 2016 - 11:48:06 EST


Em Wed, May 11, 2016 at 10:51:49PM +0900, Masami Hiramatsu escreveu:
> Instead of using raw string, use DSO__NAME_KALLSYMS and DSO__NAME_KCORE
> macros for kallsyms and kcore.

Depends on the previous patch,

- Arnaldo

> Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> ---
> tools/perf/builtin-buildid-cache.c | 8 ++++----
> tools/perf/util/annotate.c | 2 +-
> tools/perf/util/build-id.c | 2 +-
> tools/perf/util/machine.c | 2 +-
> tools/perf/util/symbol.c | 10 +++++-----
> tools/perf/util/symbol.h | 3 +++
> 6 files changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/tools/perf/builtin-buildid-cache.c b/tools/perf/builtin-buildid-cache.c
> index 632efc6..d75bded 100644
> --- a/tools/perf/builtin-buildid-cache.c
> +++ b/tools/perf/builtin-buildid-cache.c
> @@ -119,8 +119,8 @@ static int build_id_cache__add_kcore(const char *filename, bool force)
> if (build_id_cache__kcore_buildid(from_dir, sbuildid) < 0)
> return -1;
>
> - scnprintf(to_dir, sizeof(to_dir), "%s/[kernel.kcore]/%s",
> - buildid_dir, sbuildid);
> + scnprintf(to_dir, sizeof(to_dir), "%s/%s/%s",
> + buildid_dir, DSO__NAME_KCORE, sbuildid);
>
> if (!force &&
> !build_id_cache__kcore_existing(from_dir, to_dir, sizeof(to_dir))) {
> @@ -131,8 +131,8 @@ static int build_id_cache__add_kcore(const char *filename, bool force)
> if (build_id_cache__kcore_dir(dir, sizeof(dir)))
> return -1;
>
> - scnprintf(to_dir, sizeof(to_dir), "%s/[kernel.kcore]/%s/%s",
> - buildid_dir, sbuildid, dir);
> + scnprintf(to_dir, sizeof(to_dir), "%s/%s/%s/%s",
> + buildid_dir, DSO__NAME_KCORE, sbuildid, dir);
>
> if (mkdir_p(to_dir, 0755))
> return -1;
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index d4b3d03..1168442 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -1122,7 +1122,7 @@ int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)
> } else if (dso__is_kcore(dso)) {
> goto fallback;
> } else if (readlink(symfs_filename, command, sizeof(command)) < 0 ||
> - strstr(command, "[kernel.kallsyms]") ||
> + strstr(command, DSO__NAME_KALLSYMS) ||
> access(symfs_filename, R_OK)) {
> free(filename);
> fallback:
> diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
> index 234d8a1..53df9aa 100644
> --- a/tools/perf/util/build-id.c
> +++ b/tools/perf/util/build-id.c
> @@ -354,7 +354,7 @@ static char *build_id_cache__dirname_from_path(const char *name,
> } else if (is_vdso)
> realname = DSO__NAME_VDSO;
> else
> - realname = "[kernel.kallsyms]";
> + realname = DSO__NAME_KALLSYMS;
>
> if (asprintf(&filename, "%s%s%s", buildid_dir, slash ? "/" : "",
> realname) < 0)
> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> index 639a290..18dd96b 100644
> --- a/tools/perf/util/machine.c
> +++ b/tools/perf/util/machine.c
> @@ -709,7 +709,7 @@ static struct dso *machine__get_kernel(struct machine *machine)
> if (machine__is_host(machine)) {
> vmlinux_name = symbol_conf.vmlinux_name;
> if (!vmlinux_name)
> - vmlinux_name = "[kernel.kallsyms]";
> + vmlinux_name = DSO__NAME_KALLSYMS;
>
> kernel = machine__findnew_kernel(machine, vmlinux_name,
> "[kernel]", DSO_TYPE_KERNEL);
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 2946295..49caa91 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1648,8 +1648,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
>
> build_id__sprintf(dso->build_id, sizeof(dso->build_id), sbuild_id);
>
> - scnprintf(path, sizeof(path), "%s/[kernel.kcore]/%s", buildid_dir,
> - sbuild_id);
> + scnprintf(path, sizeof(path), "%s/%s/%s", buildid_dir,
> + DSO__NAME_KCORE, sbuild_id);
>
> /* Use /proc/kallsyms if possible */
> if (is_host) {
> @@ -1685,8 +1685,8 @@ static char *dso__find_kallsyms(struct dso *dso, struct map *map)
> if (!find_matching_kcore(map, path, sizeof(path)))
> return strdup(path);
>
> - scnprintf(path, sizeof(path), "%s/[kernel.kallsyms]/%s",
> - buildid_dir, sbuild_id);
> + scnprintf(path, sizeof(path), "%s/%s/%s",
> + buildid_dir, DSO__NAME_KALLSYMS, sbuild_id);
>
> if (access(path, F_OK)) {
> pr_err("No kallsyms or vmlinux with build-id %s was found\n",
> @@ -1755,7 +1755,7 @@ do_kallsyms:
>
> if (err > 0 && !dso__is_kcore(dso)) {
> dso->binary_type = DSO_BINARY_TYPE__KALLSYMS;
> - dso__set_long_name(dso, "[kernel.kallsyms]", false);
> + dso__set_long_name(dso, DSO__NAME_KALLSYMS, false);
> map__fixup_start(map);
> map__fixup_end(map);
> }
> diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
> index 07211c2..78e3bbf 100644
> --- a/tools/perf/util/symbol.h
> +++ b/tools/perf/util/symbol.h
> @@ -44,6 +44,9 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
> #define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */
> #endif
>
> +#define DSO__NAME_KALLSYMS "[kernel.kallsyms]"
> +#define DSO__NAME_KCORE "[kernel.kcore]"
> +
> /** struct symbol - symtab entry
> *
> * @ignore - resolvable but tools ignore it (e.g. idle routines)