diff options
Diffstat (limited to 'tools/perf/builtin-trace.c')
| -rw-r--r-- | tools/perf/builtin-trace.c | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index ea517762cb0c..32844d8a0ea5 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -3259,10 +3259,21 @@ static void trace__set_bpf_map_syscalls(struct trace *trace)  static struct bpf_program *trace__find_bpf_program_by_title(struct trace *trace, const char *name)  { +	struct bpf_program *pos, *prog = NULL; +	const char *sec_name; +  	if (trace->bpf_obj == NULL)  		return NULL; -	return bpf_object__find_program_by_title(trace->bpf_obj, name); +	bpf_object__for_each_program(pos, trace->bpf_obj) { +		sec_name = bpf_program__section_name(pos); +		if (sec_name && !strcmp(sec_name, name)) { +			prog = pos; +			break; +		} +	} + +	return prog;  }  static struct bpf_program *trace__find_syscall_bpf_prog(struct trace *trace, struct syscall *sc, @@ -3927,6 +3938,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)  	bool draining = false;  	trace->live = true; +	signal(SIGCHLD, sig_handler);  	if (!trace->raw_augmented_syscalls) {  		if (trace->trace_syscalls && trace__add_syscall_newtp(trace)) @@ -3952,6 +3964,9 @@ static int trace__run(struct trace *trace, int argc, const char **argv)  		evlist__add(evlist, pgfault_min);  	} +	/* Enable ignoring missing threads when -u/-p option is defined. */ +	trace->opts.ignore_missing_thread = trace->opts.target.uid != UINT_MAX || trace->opts.target.pid; +  	if (trace->sched &&  	    evlist__add_newtp(evlist, "sched", "sched_stat_runtime", trace__sched_stat_runtime))  		goto out_error_sched_stat_runtime; @@ -4875,7 +4890,6 @@ int cmd_trace(int argc, const char **argv)  	signal(SIGSEGV, sighandler_dump_stack);  	signal(SIGFPE, sighandler_dump_stack); -	signal(SIGCHLD, sig_handler);  	signal(SIGINT, sig_handler);  	trace.evlist = evlist__new();  |