mirror-linux/tools/perf/util
Wang Nan 2d470b62fa perf jevents: Handle events including .c and .o
This patch helps with Sukadev's vendor event tree where such events can happen.

>From Andi Kleen:
 Any event including a .c/.o/.bpf currently triggers BPF compilation or loading
 and then an error. This can happen for some Intel vendor 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 matching 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, interpreted as BPF source)

  $ perf stat -e 'aaa.ccc' -a -I 1000
  invalid or unsupported event: 'aaa.ccc'
  (as expected, interpreted 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}'
  <SKIP>
  (as expected, interpreted 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, interpreted as BPF source)

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Reported-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1475900185-37967-1-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2016-10-17 11:24:18 -03:00
..
include perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
intel-pt-decoder perf intel-pt: Fix MTC timestamp calculation for large MTC periods 2016-10-05 08:15:58 -03:00
libunwind
scripting-engines tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
Build perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
PERF-VERSION-GEN
alias.c
annotate.c perf annotate: Resolve 'call' operands to function names 2016-09-20 12:28:30 -03:00
annotate.h perf annotate: Pass the symbol's map/dso to the instruction parsers 2016-09-20 12:28:29 -03:00
auxtrace.c perf record: Add support for using symbols in address filters 2016-09-29 11:17:02 -03:00
auxtrace.h perf record: Add support for using symbols in address filters 2016-09-29 11:17:02 -03:00
block-range.c perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
block-range.h perf annotate: Add branch stack / basic block 2016-09-08 13:44:03 -03:00
bpf-loader.c perf bpf: Fix typo: "ehough" -> "enough" 2016-08-23 17:06:39 -03:00
bpf-loader.h perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event() 2016-07-13 23:09:03 -03:00
bpf-prologue.c
bpf-prologue.h
build-id.c perf probe: Increase debug level of SDT debug messages 2016-09-29 11:17:02 -03:00
build-id.h perf probe: Support @BUILDID or @FILE suffix for SDT events 2016-07-13 23:09:08 -03:00
cache.h
call-path.c
call-path.h
callchain.c
callchain.h
cgroup.c
cgroup.h
cloexec.c
cloexec.h
color.c
color.h
comm.c
comm.h
config.c
config.h
counts.c
counts.h
cpumap.c perf cpu_map: Add more helpers 2016-07-18 19:42:47 -03:00
cpumap.h perf cpu_map: Add more helpers 2016-07-18 19:42:47 -03:00
cs-etm.h perf tools: Add coresight etm PMU record capabilities 2016-09-22 12:19:40 -03:00
ctype.c
data-convert-bt.c perf data: Fix building in 32 bit platform with libbabeltrace 2016-09-28 10:38:20 -03:00
data-convert-bt.h
data-convert.h
data.c
data.h
db-export.c
db-export.h
debug.c tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
debug.h
demangle-java.c
demangle-java.h
demangle-rust.c
demangle-rust.h
drv_configs.c perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
drv_configs.h perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
dso.c perf symbols: Do not open device files 2016-09-20 16:20:21 -03:00
dso.h
dwarf-aux.c perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-aux.h perf probe: Match linkage name with mangled name 2016-09-29 11:17:08 -03:00
dwarf-regs.c perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
env.c
env.h
event.c perf tools: Fix MMAP event synthesis broken by MAP_HUGETLB change 2016-09-28 10:21:15 -03:00
event.h Revert "perf tools: event.h needs asm/perf_regs.h" 2016-07-25 11:58:56 -03:00
evlist.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
evlist.h perf evlist: Make {pause,resume} internal helpers 2016-07-15 17:27:50 -03:00
evsel.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
evsel.h perf evsel: Add support for address filters 2016-09-29 11:16:59 -03:00
evsel_fprintf.c perf script: Fix vanished idle symbols 2016-09-29 11:17:00 -03:00
find-vdso-map.c
genelf.c
genelf.h
genelf_debug.c
generate-cmdlist.sh
group.h
header.c perf header: Set nr_numa_nodes only when we parsed all the data 2016-10-13 11:12:29 -03:00
header.h perf pmu: Use pmu_events table to create aliases 2016-10-03 19:58:00 -03:00
help-unknown-cmd.c
help-unknown-cmd.h
hist.c perf hists: Fix width computation for srcline sort entry 2016-09-20 12:28:28 -03:00
hist.h perf hists: Make hists__fprintf_headers function global 2016-09-22 13:08:59 -03:00
intel-bts.c perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
intel-bts.h
intel-pt.c perf intel-pt: Fix decoding when there are address filters 2016-09-29 11:17:06 -03:00
intel-pt.h perf intel-pt: Record address filter in AUXTRACE_INFO event 2016-09-29 11:17:05 -03:00
intlist.c
intlist.h
jit.h
jitdump.c perf jitdump: Add the right header to get the major()/minor() definitions 2016-08-15 13:10:28 -03:00
jitdump.h
kvm-stat.h
levenshtein.c
levenshtein.h
llvm-utils.c
llvm-utils.h
lzma.c perf tools: Fix error handling of lzma decompression 2016-08-24 11:20:58 -03:00
machine.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
machine.h perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
map.c perf tools: Do hugetlb handling in more systems 2016-09-13 15:26:30 -03:00
map.h perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
mem-events.c
mem-events.h
ordered-events.c
ordered-events.h
parse-branch-options.c
parse-branch-options.h
parse-events.c perf tools: Make alias matching case-insensitive 2016-10-03 21:51:48 -03:00
parse-events.h perf list: Support long jevents descriptions 2016-10-03 21:35:47 -03:00
parse-events.l perf jevents: Handle events including .c and .o 2016-10-17 11:24:18 -03:00
parse-events.y perf tools: Add infrastructure for PMU specific configuration 2016-09-13 17:09:11 -03:00
parse-regs-options.c
parse-regs-options.h
path.c
perf_regs.c
perf_regs.h
pmu.c perf list jevents: Add support for event list topics 2016-10-03 21:35:47 -03:00
pmu.h perf list jevents: Add support for event list topics 2016-10-03 21:35:47 -03:00
pmu.l
pmu.y
probe-event.c perf probe: Check if *ptr2 is zero and not ptr2 2016-10-03 11:24:12 -03:00
probe-event.h perf probe: Add helper function to check if probe with variable 2016-09-01 12:42:25 -03:00
probe-file.c perf probe: Increase debug level of SDT debug messages 2016-09-29 11:17:02 -03:00
probe-file.h perf probe: Add supported for type casting by the running kernel 2016-08-23 17:03:31 -03:00
probe-finder.c perf probe: Skip if the function address is 0 2016-09-29 11:17:07 -03:00
probe-finder.h perf probe: Support probing on offline cross-arch binary 2016-09-01 12:41:09 -03:00
pstack.c
pstack.h
python-ext-sources tools lib api: Add str_error_c to libapi 2016-07-27 17:16:43 -03:00
python.c perf tools: Make is_printable_array global 2016-07-18 19:49:47 -03:00
quote.c
quote.h
rb_resort.h
rblist.c
rblist.h
record.c
session.c perf session: Don't warn about out of order event if write_backward is used 2016-07-15 17:27:51 -03:00
session.h
setup.py
sort.c perf tools: Make several sorting functions global 2016-09-22 13:08:57 -03:00
sort.h perf tools: Make several sorting functions global 2016-09-22 13:08:57 -03:00
srcline.c
stat-shadow.c
stat.c
stat.h
strbuf.c
strbuf.h perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
strfilter.c
strfilter.h
string.c
strlist.c
strlist.h
svghelper.c perf timechart: Use NSEC_PER_U?SEC 2016-08-23 15:37:33 -03:00
svghelper.h
symbol-elf.c perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
symbol-minimal.c perf symbols: Remove symbol_filter_t machinery 2016-09-05 11:14:50 -03:00
symbol.c perf symbols: Add dso__last_symbol() 2016-09-29 11:17:01 -03:00
symbol.h perf symbols: Add dso__last_symbol() 2016-09-29 11:17:01 -03:00
symbol_fprintf.c
syscalltbl.c
syscalltbl.h
target.c perf target: str_error_r() always returns the buffer it receives 2016-07-29 11:54:35 -03:00
target.h
term.c
term.h
thread-stack.c
thread-stack.h
thread.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
thread.h
thread_map.c
thread_map.h
tool.h
top.c
top.h
trace-event-info.c
trace-event-parse.c
trace-event-read.c
trace-event-scripting.c
trace-event.c perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trace-event.h perf tools: Introduce trace_event__tp_format_id() 2016-07-12 16:14:52 -03:00
trigger.h
tsc.c
tsc.h
unwind-libdw.c perf unwind: Use addr_location::addr instead of ip for entries 2016-08-16 15:23:29 -03:00
unwind-libdw.h
unwind-libunwind-local.c perf unwind: Use addr_location::addr instead of ip for entries 2016-08-16 15:23:29 -03:00
unwind-libunwind.c
unwind.h
usage.c
util.c tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
util.h tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
values.c
values.h
vdso.c
vdso.h
xyarray.c
xyarray.h
zlib.c