diff options
Diffstat (limited to 'tools/perf/builtin-inject.c')
| -rw-r--r-- | tools/perf/builtin-inject.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c index fbf43a454cba..5b50a4abf95f 100644 --- a/tools/perf/builtin-inject.c +++ b/tools/perf/builtin-inject.c @@ -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> @@ -110,7 +111,8 @@ static int perf_event__repipe_op2_synth(struct perf_session *session,  static int perf_event__repipe_op4_synth(struct perf_session *session,  					union perf_event *event, -					u64 data __maybe_unused) +					u64 data __maybe_unused, +					const char *str __maybe_unused)  {  	return perf_event__repipe_synth(session->tool, event);  } @@ -354,7 +356,7 @@ static struct dso *findnew_dso(int pid, int tid, const char *filename,  		nnsi = nsinfo__copy(nsi);  		if (nnsi) {  			nsinfo__put(nsi); -			nnsi->need_setns = false; +			nsinfo__clear_need_setns(nnsi);  			nsi = nnsi;  		}  		dso = machine__findnew_vdso(machine, thread); @@ -550,6 +552,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;  | 
