diff options
| -rw-r--r-- | tools/perf/util/trace-event-parse.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index e0a4f652f28..a4088ced1e6 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c @@ -1423,6 +1423,11 @@ static long long arg_num_eval(struct print_arg *arg)  				die("unknown op '%s'", arg->op.op);  			}  			break; +		case '+': +			left = arg_num_eval(arg->op.left); +			right = arg_num_eval(arg->op.right); +			val = left + right; +			break;  		default:  			die("unknown op '%s'", arg->op.op);  		} @@ -1483,6 +1488,13 @@ process_fields(struct event *event, struct print_flag_sym **list, char **tok)  		free_token(token);  		type = process_arg(event, arg, &token); + +		if (type == EVENT_OP) +			type = process_op(event, arg, &token); + +		if (type == EVENT_ERROR) +			goto out_free; +  		if (test_type_token(type, token, EVENT_DELIM, ","))  			goto out_free;  |