mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
perf inject: Try chroot directory when reading build-id
When reading build-id from a DSO, it should consider if it's from a chroot task. In that case, the path is different so it needs to prepend the root directory to access the file correctly. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20220202070828.143303-4-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
67fd189246
commit
75d48c5670
@ -25,6 +25,7 @@
|
||||
#include "util/synthetic-events.h"
|
||||
#include "util/thread.h"
|
||||
#include "util/namespaces.h"
|
||||
#include "util/util.h"
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <subcmd/parse-options.h>
|
||||
@ -550,6 +551,15 @@ static int dso__read_build_id(struct dso *dso)
|
||||
nsinfo__mountns_enter(dso->nsinfo, &nsc);
|
||||
if (filename__read_build_id(dso->long_name, &dso->bid) > 0)
|
||||
dso->has_build_id = true;
|
||||
else if (dso->nsinfo) {
|
||||
char *new_name;
|
||||
|
||||
new_name = filename_with_chroot(dso->nsinfo->pid,
|
||||
dso->long_name);
|
||||
if (new_name && filename__read_build_id(new_name, &dso->bid) > 0)
|
||||
dso->has_build_id = true;
|
||||
free(new_name);
|
||||
}
|
||||
nsinfo__mountns_exit(&nsc);
|
||||
|
||||
return dso->has_build_id ? 0 : -1;
|
||||
|
Loading…
Reference in New Issue
Block a user