提交 361d1346 编写于 作者: D Dave Martin 提交者: Arnaldo Carvalho de Melo

perf report: Don't abbreviate file paths relative to the cwd

This avoids around some problems where the full path is executables and DSOs it
needed for finding debug symbols on platforms with separated debug symbol files
such as Ubuntu.  This is simpler than tracking an extra name for each image.

The only impact should be that paths in verbose output from the perf tools
become absolute, instead of relative to .

LKML-Reference: <new-submission>
Signed-off-by: NDave Martin <dave.martin@linaro.org>
Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
上级 0f0cbf7a
...@@ -517,7 +517,7 @@ int event__process_mmap(event_t *self, struct perf_session *session) ...@@ -517,7 +517,7 @@ int event__process_mmap(event_t *self, struct perf_session *session)
map = map__new(&machine->user_dsos, self->mmap.start, map = map__new(&machine->user_dsos, self->mmap.start,
self->mmap.len, self->mmap.pgoff, self->mmap.len, self->mmap.pgoff,
self->mmap.pid, self->mmap.filename, self->mmap.pid, self->mmap.filename,
MAP__FUNCTION, session->cwd, session->cwdlen); MAP__FUNCTION);
if (thread == NULL || map == NULL) if (thread == NULL || map == NULL)
goto out_problem; goto out_problem;
......
...@@ -17,16 +17,6 @@ static inline int is_anon_memory(const char *filename) ...@@ -17,16 +17,6 @@ static inline int is_anon_memory(const char *filename)
return strcmp(filename, "//anon") == 0; return strcmp(filename, "//anon") == 0;
} }
static int strcommon(const char *pathname, char *cwd, int cwdlen)
{
int n = 0;
while (n < cwdlen && pathname[n] == cwd[n])
++n;
return n;
}
void map__init(struct map *self, enum map_type type, void map__init(struct map *self, enum map_type type,
u64 start, u64 end, u64 pgoff, struct dso *dso) u64 start, u64 end, u64 pgoff, struct dso *dso)
{ {
...@@ -43,7 +33,7 @@ void map__init(struct map *self, enum map_type type, ...@@ -43,7 +33,7 @@ void map__init(struct map *self, enum map_type type,
struct map *map__new(struct list_head *dsos__list, u64 start, u64 len, struct map *map__new(struct list_head *dsos__list, u64 start, u64 len,
u64 pgoff, u32 pid, char *filename, u64 pgoff, u32 pid, char *filename,
enum map_type type, char *cwd, int cwdlen) enum map_type type)
{ {
struct map *self = malloc(sizeof(*self)); struct map *self = malloc(sizeof(*self));
...@@ -52,16 +42,6 @@ struct map *map__new(struct list_head *dsos__list, u64 start, u64 len, ...@@ -52,16 +42,6 @@ struct map *map__new(struct list_head *dsos__list, u64 start, u64 len,
struct dso *dso; struct dso *dso;
int anon; int anon;
if (cwd) {
int n = strcommon(filename, cwd, cwdlen);
if (n == cwdlen) {
snprintf(newfilename, sizeof(newfilename),
".%s", filename + n);
filename = newfilename;
}
}
anon = is_anon_memory(filename); anon = is_anon_memory(filename);
if (anon) { if (anon) {
......
...@@ -106,7 +106,7 @@ void map__init(struct map *self, enum map_type type, ...@@ -106,7 +106,7 @@ void map__init(struct map *self, enum map_type type,
u64 start, u64 end, u64 pgoff, struct dso *dso); u64 start, u64 end, u64 pgoff, struct dso *dso);
struct map *map__new(struct list_head *dsos__list, u64 start, u64 len, struct map *map__new(struct list_head *dsos__list, u64 start, u64 len,
u64 pgoff, u32 pid, char *filename, u64 pgoff, u32 pid, char *filename,
enum map_type type, char *cwd, int cwdlen); enum map_type type);
void map__delete(struct map *self); void map__delete(struct map *self);
struct map *map__clone(struct map *self); struct map *map__clone(struct map *self);
int map__overlap(struct map *l, struct map *r); int map__overlap(struct map *l, struct map *r);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册