Re: [PATCH] perf, tools: Handle events including .c and .o

From: Wangnan (F)
Date: Sun Sep 18 2016 - 06:22:00 EST




On 2016/9/18 9:02, Andi Kleen wrote:
From: Andi Kleen <ak@xxxxxxxxxxxxxxx>

This is a generic bug fix, but it helps with Sukadev's JSON event tree
where such events can happen.

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.

Fix the scanner to only match for .o or .c or .bpf at the end.
This will prevent loading multiple BPF scripts separated with comma,
but I assume this is acceptable.

Cc: wangnan0@xxxxxxxxxx
Cc: sukadev@xxxxxxxxxxxxxxxxxx
Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>

I tested '.c' in middle of an event:

# perf trace --event 'aaa.ccc'
invalid or unsupported event: 'aaa.ccc'
Run 'perf list' for a list of valid events
...

It is not recongnized as a BPF source.

So could you please provide an example to show how
this potential bug breaks the parsing of new events?

---
tools/perf/util/parse-events.l | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 7a2519435da0..64ca26e4ed2d 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -162,8 +162,8 @@ modifier_bp [rwx]{1,3}
}
{event_pmu} |
-{bpf_object} |
-{bpf_source} |
+({bpf_object}$) |
+({bpf_source}$) |

What about putting '$' at the definition of bpf_xxx like this?

diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index 9f43fda..d9ff690 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]+

Thank you.

{event} {
BEGIN(INITIAL);
REWIND(1);