diff options
Diffstat (limited to 'tools/perf/builtin-trace.c')
| -rw-r--r-- | tools/perf/builtin-trace.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 6a748eca2edb..88561eed7950 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -291,7 +291,7 @@ size_t strarray__scnprintf(struct strarray *sa, char *bf, size_t size, const cha  {  	int idx = val - sa->offset; -	if (idx < 0 || idx >= sa->nr_entries) +	if (idx < 0 || idx >= sa->nr_entries || sa->entries[idx] == NULL)  		return scnprintf(bf, size, intfmt, val);  	return scnprintf(bf, size, "%s", sa->entries[idx]); @@ -761,10 +761,12 @@ static struct syscall_fmt {  	  .arg = { [0] = STRARRAY(resource, rlimit_resources), }, },  	{ .name	    = "socket",  	  .arg = { [0] = STRARRAY(family, socket_families), -		   [1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, }, }, +		   [1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, +		   [2] = { .scnprintf = SCA_SK_PROTO, /* protocol */ }, }, },  	{ .name	    = "socketpair",  	  .arg = { [0] = STRARRAY(family, socket_families), -		   [1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, }, }, +		   [1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, +		   [2] = { .scnprintf = SCA_SK_PROTO, /* protocol */ }, }, },  	{ .name	    = "stat", .alias = "newstat", },  	{ .name	    = "statx",  	  .arg = { [0] = { .scnprintf = SCA_FDAT,	 /* fdat */ }, @@ -2990,6 +2992,7 @@ static int trace__parse_events_option(const struct option *opt, const char *str,  		if (trace__validate_ev_qualifier(trace))  			goto out; +		trace->trace_syscalls = true;  	}  	err = 0; @@ -3045,7 +3048,7 @@ int cmd_trace(int argc, const char **argv)  		},  		.output = stderr,  		.show_comm = true, -		.trace_syscalls = true, +		.trace_syscalls = false,  		.kernel_syscallchains = false,  		.max_stack = UINT_MAX,  	}; @@ -3191,13 +3194,7 @@ int cmd_trace(int argc, const char **argv)  	if (!trace.trace_syscalls && !trace.trace_pgfaults &&  	    trace.evlist->nr_entries == 0 /* Was --events used? */) { -		pr_err("Please specify something to trace.\n"); -		return -1; -	} - -	if (!trace.trace_syscalls && trace.ev_qualifier) { -		pr_err("The -e option can't be used with --no-syscalls.\n"); -		goto out; +		trace.trace_syscalls = true;  	}  	if (output_name != NULL) {  |