Re: [PATCH 9/9] perf tools: Unwind properly location after REJECT

From: Arnaldo Carvalho de Melo
Date: Fri Oct 13 2017 - 15:50:44 EST


Em Fri, Oct 13, 2017 at 10:37:36AM +0200, Jiri Olsa escreveu:
> 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.

What is this fixing? Please state that, below I show what it is breaking
:-/

Before:

[root@jouet ~]# perf trace --no-syscalls -e ~acme/bpf/sys_read.c/max-stack=5/ sleep 1
bpf: builtin compilation failed: -95, try external compiler
0.000 perf_bpf_probe:func:(ffffffffbb2634e0))
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)

After:

[root@jouet ~]# perf trace --no-syscalls -e ~acme/bpf/sys_read.c/max-stack=5/ sleep 1
event syntax error: '/home/acme/bpf/sys_read.c/max-stack=5/'
\___ parser error
Run 'perf list' for a list of valid events

Usage: perf trace [<options>] [<command>]
or: perf trace [<options>] -- <command> [<options>]
or: perf trace record [<options>] [<command>]
or: perf trace record [<options>] -- <command> [<options>]

-e, --event <event> event/syscall selector. use 'perf list' to list available events
[root@jouet ~]#