aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/builtin-script.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 5b1543f42290..2d8cb1d1682c 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -149,6 +149,7 @@ static struct {
149 unsigned int print_ip_opts; 149 unsigned int print_ip_opts;
150 u64 fields; 150 u64 fields;
151 u64 invalid_fields; 151 u64 invalid_fields;
152 u64 user_set_fields;
152} output[OUTPUT_TYPE_MAX] = { 153} output[OUTPUT_TYPE_MAX] = {
153 154
154 [PERF_TYPE_HARDWARE] = { 155 [PERF_TYPE_HARDWARE] = {
@@ -345,7 +346,7 @@ static int perf_evsel__do_check_stype(struct perf_evsel *evsel,
345 if (attr->sample_type & sample_type) 346 if (attr->sample_type & sample_type)
346 return 0; 347 return 0;
347 348
348 if (output[type].user_set) { 349 if (output[type].user_set_fields & field) {
349 if (allow_user_set) 350 if (allow_user_set)
350 return 0; 351 return 0;
351 evname = perf_evsel__name(evsel); 352 evname = perf_evsel__name(evsel);
@@ -2632,10 +2633,13 @@ parse:
2632 pr_warning("\'%s\' not valid for %s events. Ignoring.\n", 2633 pr_warning("\'%s\' not valid for %s events. Ignoring.\n",
2633 all_output_options[i].str, event_type(j)); 2634 all_output_options[i].str, event_type(j));
2634 } else { 2635 } else {
2635 if (change == REMOVE) 2636 if (change == REMOVE) {
2636 output[j].fields &= ~all_output_options[i].field; 2637 output[j].fields &= ~all_output_options[i].field;
2637 else 2638 output[j].user_set_fields &= ~all_output_options[i].field;
2639 } else {
2638 output[j].fields |= all_output_options[i].field; 2640 output[j].fields |= all_output_options[i].field;
2641 output[j].user_set_fields |= all_output_options[i].field;
2642 }
2639 output[j].user_set = true; 2643 output[j].user_set = true;
2640 output[j].wildcard_set = true; 2644 output[j].wildcard_set = true;
2641 } 2645 }