From patchwork Sat Oct 8 04:16:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Nan X-Patchwork-Id: 77372 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp500238qge; Fri, 7 Oct 2016 21:17:35 -0700 (PDT) X-Received: by 10.66.163.5 with SMTP id ye5mr35542750pab.125.1475900255125; Fri, 07 Oct 2016 21:17:35 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q126si394255pga.81.2016.10.07.21.17.34; Fri, 07 Oct 2016 21:17:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752163AbcJHERb (ORCPT + 27 others); Sat, 8 Oct 2016 00:17:31 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:41070 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751119AbcJHERV (ORCPT ); Sat, 8 Oct 2016 00:17:21 -0400 Received: from 172.24.1.60 (EHLO szxeml430-hub.china.huawei.com) ([172.24.1.60]) by szxrg02-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id DOH41125; Sat, 08 Oct 2016 12:16:46 +0800 (CST) Received: from linux-4hy3.site (10.107.193.248) by szxeml430-hub.china.huawei.com (10.82.67.185) with Microsoft SMTP Server id 14.3.235.1; Sat, 8 Oct 2016 12:16:37 +0800 From: Wang Nan To: CC: , , , , Wang Nan , Sukadev Bhattiprolu , Arnaldo Carvalho de Melo , Jiri Olsa Subject: [PATCH] perf, tools: Handle events including .c and .o Date: Sat, 8 Oct 2016 04:16:25 +0000 Message-ID: <1475900185-37967-1-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <20161006201824.GG4809@kernel.org> References: <20161006201824.GG4809@kernel.org> MIME-Version: 1.0 X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch helps with Sukadev's JSON event tree where such events can happen. >From Andi Kleen: Any event inclduing a .c/.o/.bpf currently triggers BPF compilation or loading and then an error. This can happen for some Intel JSON events, which cannot be used. This patch fixes this problem by forbidding BPF file patch containing '{', '}' and ',', make sure flex consumes the leading '{', instead of matcing it using a BPF file path. Tested result: $ perf stat -e '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' -a -I 1000 invalid or unsupported event: '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' Run 'perf list' for a list of valid events (as expected, interperted as event) $ perf stat -e 'aaa.c' -a -I 1000 ERROR: problems with path aaa.c: No such file or directory (as expected, interperted as BPF source) $ perf stat -e 'aaa.ccc' -a -I 1000 invalid or unsupported event: 'aaa.ccc' (as expected, interperted as event) $ perf stat -e '{aaa.c}' -a -I 1000 ERROR: problems with path aaa.c: No such file or directory event syntax error: '{aaa.c}' (as expected, interperted as BPF source) $ perf stat -e '{cycles,aaa.c}' -a -I 1000 ERROR: problems with path aaa.c: No such file or directory event syntax error: '{cycles,aaa.c}' (as expected, interperted as BPF source) Signed-off-by: Wang Nan Cc: Sukadev Bhattiprolu Cc: Andi Kleen Cc: Arnaldo Carvalho de Melo Cc: Jiri Olsa --- tools/perf/util/parse-events.l | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 1.8.3.4 diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 9f43fda..660fca0 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -136,8 +136,8 @@ do { \ group [^,{}/]*[{][^}]*[}][^,{}/]* event_pmu [^,{}/]+[/][^/]*[/][^,{}/]* event [^,{}/]+ -bpf_object .*\.(o|bpf) -bpf_source .*\.c +bpf_object [^,{}]+\.(o|bpf) +bpf_source [^,{}]+\.c num_dec [0-9]+ num_hex 0x[a-fA-F0-9]+