perf tools: Separate the VDSO map name from the VDSO dso name
This is in preparation for supporting 32-bit compatibility VDSOs. Reviewed-by: Jiri Olsa <jolsa@redhat.com> Signed-off-by: Adrian 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.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
4f71f2a0ab
commit
51682dc744
@ -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,
|
|||||||
|
|
||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 @@
|
|||||||
|
|
||||||
#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);
|
||||||
|
Loading…
Reference in New Issue
Block a user