diff options
Diffstat (limited to 'tools/perf/builtin-script.c')
| -rw-r--r-- | tools/perf/builtin-script.c | 38 | 
1 files changed, 22 insertions, 16 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 0e824f7d8b19..c32c2eb16d7d 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -368,16 +368,6 @@ static inline int output_type(unsigned int type)  	return OUTPUT_TYPE_OTHER;  } -static inline unsigned int attr_type(unsigned int type) -{ -	switch (type) { -	case OUTPUT_TYPE_SYNTH: -		return PERF_TYPE_SYNTH; -	default: -		return type; -	} -} -  static bool output_set_by_user(void)  {  	int j; @@ -469,7 +459,7 @@ static int evsel__check_attr(struct evsel *evsel, struct perf_session *session)  		return -EINVAL;  	if (PRINT_FIELD(WEIGHT) && -	    evsel__check_stype(evsel, PERF_SAMPLE_WEIGHT, "WEIGHT", PERF_OUTPUT_WEIGHT)) +	    evsel__check_stype(evsel, PERF_SAMPLE_WEIGHT_TYPE, "WEIGHT", PERF_OUTPUT_WEIGHT))  		return -EINVAL;  	if (PRINT_FIELD(SYM) && @@ -556,6 +546,18 @@ static void set_print_ip_opts(struct perf_event_attr *attr)  		output[type].print_ip_opts |= EVSEL__PRINT_SRCLINE;  } +static struct evsel *find_first_output_type(struct evlist *evlist, +					    unsigned int type) +{ +	struct evsel *evsel; + +	evlist__for_each_entry(evlist, evsel) { +		if (output_type(evsel->core.attr.type) == (int)type) +			return evsel; +	} +	return NULL; +} +  /*   * verify all user requested events exist and the samples   * have the expected data @@ -567,7 +569,7 @@ static int perf_session__check_output_opt(struct perf_session *session)  	struct evsel *evsel;  	for (j = 0; j < OUTPUT_TYPE_MAX; ++j) { -		evsel = perf_session__find_first_evtype(session, attr_type(j)); +		evsel = find_first_output_type(session->evlist, j);  		/*  		 * even if fields is set to 0 (ie., show nothing) event must @@ -4037,11 +4039,15 @@ script_found:  		goto out_delete;  	uname(&uts); -	if (data.is_pipe ||  /* assume pipe_mode indicates native_arch */ -	    !strcmp(uts.machine, session->header.env.arch) || -	    (!strcmp(uts.machine, "x86_64") && -	     !strcmp(session->header.env.arch, "i386"))) +	if (data.is_pipe) { /* Assume pipe_mode indicates native_arch */  		native_arch = true; +	} else if (session->header.env.arch) { +		if (!strcmp(uts.machine, session->header.env.arch)) +			native_arch = true; +		else if (!strcmp(uts.machine, "x86_64") && +			 !strcmp(session->header.env.arch, "i386")) +			native_arch = true; +	}  	script.session = session;  	script__setup_sample_type(&script);  |