From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751685AbdJ1XMl (ORCPT ); Sat, 28 Oct 2017 19:12:41 -0400 Received: from terminus.zytor.com ([65.50.211.136]:32997 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751445AbdJ1XMh (ORCPT ); Sat, 28 Oct 2017 19:12:37 -0400 Date: Sat, 28 Oct 2017 16:10:20 -0700 From: tip-bot for Jiri Olsa Message-ID: Cc: dsahern@gmail.com, ak@linux.intel.com, namhyung@kernel.org, linux-kernel@vger.kernel.org, changbin.du@intel.com, tglx@linutronix.de, yao.jin@linux.intel.com, mingo@kernel.org, wangnan0@huawei.com, jolsa@kernel.org, acme@redhat.com, hpa@zytor.com Reply-To: changbin.du@intel.com, linux-kernel@vger.kernel.org, namhyung@kernel.org, ak@linux.intel.com, dsahern@gmail.com, hpa@zytor.com, wangnan0@huawei.com, acme@redhat.com, jolsa@kernel.org, mingo@kernel.org, yao.jin@linux.intel.com, tglx@linutronix.de In-Reply-To: <20171009140944.GD28623@kernel.org> References: <20171009140944.GD28623@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/urgent] perf tools: Unwind properly location after REJECT Git-Commit-ID: 9445464bb8318e42e5232b37fc7218ed028517f6 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 9445464bb8318e42e5232b37fc7218ed028517f6 Gitweb: https://git.kernel.org/tip/9445464bb8318e42e5232b37fc7218ed028517f6 Author: Jiri Olsa AuthorDate: Thu, 12 Oct 2017 17:03:38 +0200 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 27 Oct 2017 11:42:51 -0300 perf tools: Unwind properly location after REJECT We have defined YY_USER_ACTION to keep trace of the column location during events parsing, but we need to clean it up when we call REJECT. When REJECT is called, the lexer shrinks the text and re-runs the matching, so we need to address it in resuming the previous location value to keep it correct for error display, like: Before: $ perf stat -e 'cpu/uops_executed.core,krava/' true event syntax error: '..38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;1\ 1;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;\ 21;38;50 �' \___ unknown term After: $ ./perf stat -e 'cpu/uops_executed.core,krava/' true event syntax error: '..cuted.core,krava/' \___ unknown term Signed-off-by: Jiri Olsa Reported-by: Arnaldo Carvalho de Melo Tested-by: Arnaldo Carvalho de Melo Tested-by: Andi Kleen Cc: Changbin Du Cc: David Ahern Cc: Jin Yao Cc: Namhyung Kim Cc: Wang Nan Link: http://lkml.kernel.org/n/tip-vug2hchlny30jfsfrumbym26@git.kernel.org Link: http://lkml.kernel.org/r/20171009140944.GD28623@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/parse-events.l | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index dcfdafd..6680e4f 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -154,6 +154,10 @@ do { \ yycolumn += yyleng; \ } while (0); +#define USER_REJECT \ + yycolumn -= yyleng; \ + REJECT + %} %x mem @@ -335,8 +339,8 @@ r{num_raw_hex} { return raw(yyscanner); } {num_hex} { return value(yyscanner, 16); } {modifier_event} { return str(yyscanner, PE_MODIFIER_EVENT); } -{bpf_object} { if (!isbpf(yyscanner)) REJECT; return str(yyscanner, PE_BPF_OBJECT); } -{bpf_source} { if (!isbpf(yyscanner)) REJECT; return str(yyscanner, PE_BPF_SOURCE); } +{bpf_object} { if (!isbpf(yyscanner)) USER_REJECT; return str(yyscanner, PE_BPF_OBJECT); } +{bpf_source} { if (!isbpf(yyscanner)) USER_REJECT; return str(yyscanner, PE_BPF_SOURCE); } {name} { return pmu_str_check(yyscanner); } "/" { BEGIN(config); return '/'; } - { return '-'; }