mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
perf annotate: Fix up usage of the build id cache
It was assuming that the cache was always available and also wasn't checking if the file found in the build id cache was just a kallsyms file, that is not supported by objdump for disassembly. Reported-by: Ingo Molnar <[email protected]> Cc: Frédéric Weisbecker <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Tom Zanussi <[email protected]> LKML-Reference: <new-submission> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
parent
c392c4c6dc
commit
44bf460649
1 changed files with 11 additions and 2 deletions
|
|
@ -990,6 +990,7 @@ int hist_entry__annotate(struct hist_entry *self, struct list_head *head)
|
|||
struct map *map = self->ms.map;
|
||||
struct dso *dso = map->dso;
|
||||
char *filename = dso__build_id_filename(dso, NULL, 0);
|
||||
bool free_filename = true;
|
||||
char command[PATH_MAX * 2];
|
||||
FILE *file;
|
||||
int err = 0;
|
||||
|
|
@ -1001,11 +1002,19 @@ int hist_entry__annotate(struct hist_entry *self, struct list_head *head)
|
|||
sym->name);
|
||||
return -ENOMEM;
|
||||
}
|
||||
goto fallback;
|
||||
} else if (readlink(filename, command, sizeof(command)) < 0 ||
|
||||
strstr(command, "[kernel.kallsyms]") ||
|
||||
access(filename, R_OK)) {
|
||||
free(filename);
|
||||
fallback:
|
||||
/*
|
||||
* If we don't have build-ids, well, lets hope that this
|
||||
* If we don't have build-ids or the build-id file isn't in the
|
||||
* cache, or is just a kallsyms file, well, lets hope that this
|
||||
* DSO is the same as when 'perf record' ran.
|
||||
*/
|
||||
filename = dso->long_name;
|
||||
free_filename = false;
|
||||
}
|
||||
|
||||
if (dso->origin == DSO__ORIG_KERNEL) {
|
||||
|
|
@ -1045,7 +1054,7 @@ int hist_entry__annotate(struct hist_entry *self, struct list_head *head)
|
|||
|
||||
pclose(file);
|
||||
out_free_filename:
|
||||
if (dso->has_build_id)
|
||||
if (free_filename)
|
||||
free(filename);
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue