Commit 51682dc7 authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo

perf tools: Separate the VDSO map name from the VDSO dso name

This is in preparation for supporting 32-bit compatibility VDSOs.
Reviewed-by: default avatarJiri Olsa <jolsa@redhat.com>
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1406035081-14301-49-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4f71f2a0
...@@ -256,9 +256,9 @@ static int __dsos__write_buildid_table(struct list_head *head, ...@@ -256,9 +256,9 @@ static int __dsos__write_buildid_table(struct list_head *head,
if (!pos->hit) if (!pos->hit)
continue; continue;
if (is_vdso_map(pos->short_name)) { if (dso__is_vdso(pos)) {
name = (char *) VDSO__MAP_NAME; name = pos->short_name;
name_len = sizeof(VDSO__MAP_NAME) + 1; name_len = pos->short_name_len + 1;
} else if (dso__is_kcore(pos)) { } else if (dso__is_kcore(pos)) {
machine__mmap_name(machine, nm, sizeof(nm)); machine__mmap_name(machine, nm, sizeof(nm));
name = nm; name = nm;
...@@ -339,7 +339,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir, ...@@ -339,7 +339,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir,
len = scnprintf(filename, size, "%s%s%s", len = scnprintf(filename, size, "%s%s%s",
debugdir, slash ? "/" : "", debugdir, slash ? "/" : "",
is_vdso ? VDSO__MAP_NAME : realname); is_vdso ? DSO__NAME_VDSO : realname);
if (mkdir_p(filename, 0755)) if (mkdir_p(filename, 0755))
goto out_free; goto out_free;
...@@ -427,7 +427,7 @@ static int dso__cache_build_id(struct dso *dso, struct machine *machine, ...@@ -427,7 +427,7 @@ static int dso__cache_build_id(struct dso *dso, struct machine *machine,
const char *debugdir) const char *debugdir)
{ {
bool is_kallsyms = dso->kernel && dso->long_name[0] != '/'; bool is_kallsyms = dso->kernel && dso->long_name[0] != '/';
bool is_vdso = is_vdso_map(dso->short_name); bool is_vdso = dso__is_vdso(dso);
const char *name = dso->long_name; const char *name = dso->long_name;
char nm[PATH_MAX]; char nm[PATH_MAX];
......
...@@ -622,7 +622,7 @@ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, ...@@ -622,7 +622,7 @@ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name,
GElf_Shdr shdr; GElf_Shdr shdr;
ss->adjust_symbols = (ehdr.e_type == ET_EXEC || ss->adjust_symbols = (ehdr.e_type == ET_EXEC ||
ehdr.e_type == ET_REL || ehdr.e_type == ET_REL ||
is_vdso_map(dso->short_name) || dso__is_vdso(dso) ||
elf_section_by_name(elf, &ehdr, &shdr, elf_section_by_name(elf, &ehdr, &shdr,
".gnu.prelink_undo", ".gnu.prelink_undo",
NULL) != NULL); NULL) != NULL);
......
...@@ -33,7 +33,7 @@ static struct vdso_info *vdso_info__new(void) ...@@ -33,7 +33,7 @@ static struct vdso_info *vdso_info__new(void)
static const struct vdso_info vdso_info_init = { static const struct vdso_info vdso_info_init = {
.vdso = { .vdso = {
.temp_file_name = VDSO__TEMP_FILE_NAME, .temp_file_name = VDSO__TEMP_FILE_NAME,
.dso_name = VDSO__MAP_NAME, .dso_name = DSO__NAME_VDSO,
}, },
}; };
...@@ -147,7 +147,7 @@ struct dso *vdso__dso_findnew(struct machine *machine) ...@@ -147,7 +147,7 @@ struct dso *vdso__dso_findnew(struct machine *machine)
if (!vdso_info) if (!vdso_info)
return NULL; return NULL;
dso = dsos__find(&machine->user_dsos, VDSO__MAP_NAME, true); dso = dsos__find(&machine->user_dsos, DSO__NAME_VDSO, true);
if (!dso) { if (!dso) {
char *file; char *file;
...@@ -155,8 +155,13 @@ struct dso *vdso__dso_findnew(struct machine *machine) ...@@ -155,8 +155,13 @@ struct dso *vdso__dso_findnew(struct machine *machine)
if (!file) if (!file)
return NULL; return NULL;
dso = vdso__new(machine, VDSO__MAP_NAME, file); dso = vdso__new(machine, DSO__NAME_VDSO, file);
} }
return dso; return dso;
} }
bool dso__is_vdso(struct dso *dso)
{
return !strcmp(dso->short_name, DSO__NAME_VDSO);
}
...@@ -7,11 +7,17 @@ ...@@ -7,11 +7,17 @@
#define VDSO__MAP_NAME "[vdso]" #define VDSO__MAP_NAME "[vdso]"
#define DSO__NAME_VDSO "[vdso]"
static inline bool is_vdso_map(const char *filename) static inline bool is_vdso_map(const char *filename)
{ {
return !strcmp(filename, VDSO__MAP_NAME); return !strcmp(filename, VDSO__MAP_NAME);
} }
struct dso;
bool dso__is_vdso(struct dso *dso);
struct machine; struct machine;
struct dso *vdso__dso_findnew(struct machine *machine); struct dso *vdso__dso_findnew(struct machine *machine);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment