From: Jiri Olsa <jolsa@redhat.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>, Jiri Olsa <jolsa@kernel.org>,
Wang Nan <wangnan0@huawei.com>,
linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>,
He Kuang <hekuang@huawei.com>, Alexei Starovoitov <ast@fb.com>
Subject: Re: [PATCH 2/2] perf, tools: Don't force MetricExprs to lower case
Date: Thu, 12 Oct 2017 17:13:35 +0200 [thread overview]
Message-ID: <20171012151335.GA20291@krava> (raw)
In-Reply-To: <20171009144155.GB1561@krava>
On Mon, Oct 09, 2017 at 04:41:55PM +0200, Jiri Olsa wrote:
> On Mon, Oct 09, 2017 at 11:09:44AM -0300, Arnaldo Carvalho de Melo wrote:
>
> SNIP
>
> > [root@jouet bpf]# cat sys_read.c
> > #define SEC(NAME) __attribute__((section(NAME), used))
> > SEC("func=sys_read")
> > int bpf_func__sys_read(void *ctx)
> > {
> > return 1;
> > }
> > char _license[] SEC("license") = "GPL";
> > int _version SEC("version") = LINUX_VERSION_CODE;
> > [root@jouet bpf]# perf trace --no-syscalls -e sys_read.c/max-stack=5/ sleep 1
> > bpf: builtin compilation failed: -95, try external compiler
> > 0.000 perf_bpf_probe:func:(ffffffffb7263190))
> > sys_read ([kernel.kallsyms])
> > entry_SYSCALL_64_fastpath ([kernel.kallsyms])
> > __read (/usr/lib64/ld-2.25.so)
> > _dl_map_object (/usr/lib64/ld-2.25.so)
> > [root@jouet bpf]# perf trace --no-syscalls -e sys_read.c sleep 1
> > bpf: builtin compilation failed: -95, try external compiler
> > 0.000 perf_bpf_probe:func:(ffffffffb7263190))
> > [root@jouet bpf]#
>
> is this ok?
>
> >
> > [root@jouet bpf]# perf stat -e UOPS_EXECUTED.CORE sleep 1
> >
> > Performance counter stats for 'sleep 1':
> >
> > 1,205,347 UOPS_EXECUTED.CORE
> >
> > 1.001694225 seconds time elapsed
> >
> > But I noticed this problem:
> >
> > [root@jouet bpf]# perf stat -e cpu/uops_executed.core/,uops_executed.core,cpu/UOPS_EXECUTED.CORE sleep 1
> > event syntax error: '..d=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:IY�'
> > \___ parser error
> > Run 'perf list' for a list of valid events
> >
>
> mama mia, this looks like unhandled case of error printing.. I'll check
I think I found the issue, could you please check following patch?
and wrt Andi's concern about wrong error message,
now if you make typo in your bpf file it says:
[jolsa@krava perf]$ ./perf stat -e krava.c// sleep 1
event syntax error: 'krava.c//'
\___ Cannot find PMU `krava.c'. Missing kernel support?
Run 'perf list' for a list of valid events
...
looks sane enough.. ;-)
thanks,
jirka
---
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index ea2426daf7e8..241396cd059d 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -8,6 +8,9 @@
%{
#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
#include "../perf.h"
#include "parse-events.h"
#include "parse-events-bison.h"
@@ -53,9 +56,8 @@ static int str(yyscan_t scanner, int token)
return token;
}
-static bool isbpf(yyscan_t scanner)
+static bool isbpf_suffix(char *text)
{
- char *text = parse_events_get_text(scanner);
int len = strlen(text);
if (len < 2)
@@ -68,6 +70,17 @@ static bool isbpf(yyscan_t scanner)
return false;
}
+static bool isbpf(yyscan_t scanner)
+{
+ char *text = parse_events_get_text(scanner);
+ struct stat st;
+
+ if (!isbpf_suffix(text))
+ return false;
+
+ return stat(text, &st) == 0;
+}
+
/*
* This function is called when the parser gets two kind of input:
*
@@ -141,6 +154,10 @@ do { \
yycolumn += yyleng; \
} while (0);
+#define USER_REJECT \
+ yycolumn -= yyleng; \
+ REJECT
+
%}
%x mem
@@ -323,8 +340,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 '-'; }
next prev parent reply other threads:[~2017-10-12 15:13 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-12 19:56 [PATCH 1/2] perf, tools, json: Fix ILP metrics Andi Kleen
2017-09-12 19:56 ` [PATCH 2/2] perf, tools: Don't force MetricExprs to lower case Andi Kleen
2017-10-03 16:06 ` Arnaldo Carvalho de Melo
2017-10-04 10:30 ` Jiri Olsa
2017-10-04 16:27 ` Andi Kleen
2017-10-09 13:41 ` Jiri Olsa
2017-10-09 14:07 ` Andi Kleen
2017-10-09 14:12 ` Arnaldo Carvalho de Melo
2017-10-09 14:39 ` Jiri Olsa
2017-10-09 14:51 ` Arnaldo Carvalho de Melo
2017-10-09 15:39 ` Andi Kleen
2017-10-12 15:31 ` Wangnan (F)
2017-10-12 15:59 ` Jiri Olsa
2017-10-12 16:07 ` Wangnan (F)
2017-10-09 14:43 ` Jiri Olsa
2017-10-09 14:09 ` Arnaldo Carvalho de Melo
2017-10-09 14:41 ` Jiri Olsa
2017-10-12 15:13 ` Jiri Olsa [this message]
2017-10-12 21:53 ` Andi Kleen
2017-10-28 23:10 ` [tip:perf/urgent] perf tools: Unwind properly location after REJECT tip-bot for Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171012151335.GA20291@krava \
--to=jolsa@redhat.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=andi@firstfloor.org \
--cc=ast@fb.com \
--cc=hekuang@huawei.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.