kernel_optimize_test/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 perf unwind: Fix wrongly used regs for aarch64 unwind 2016-06-23 10:30:31 -03:00
scripting-engines tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
alias.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
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 perf bpf: Add prologue for BPF programs for fetching arguments 2015-11-18 17:51:04 -03:00
bpf-prologue.h perf bpf: Add prologue for BPF programs for fetching arguments 2015-11-18 17:51:04 -03:00
Build perf pmu: Push configuration down to PMU driver 2016-09-22 12:19:41 -03:00
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 perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
call-path.c perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
call-path.h perf tools: Refactor code to move call path handling out of thread-stack 2016-05-06 13:00:43 -03:00
callchain.c perf hists: Move sort__has_parent into struct perf_hpp_list 2016-05-05 21:03:59 -03:00
callchain.h perf tests: Fix hist accumulation test 2016-07-04 19:39:01 -03:00
cgroup.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
cgroup.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
cloexec.c perf tools: Introduce weak alternative to sched_getcpu() 2016-07-12 15:20:34 -03:00
cloexec.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
color.c perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
color.h
comm.c
comm.h
config.c perf config: Introduce new init() and exit() 2016-06-23 17:20:04 -03:00
config.h perf config: Introduce new init() and exit() 2016-06-23 17:20:04 -03:00
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 perf ui/stdio: Align column header for hierarchy output 2016-02-24 20:21:12 -03:00
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 perf data ctf: Pass convert options through opts structure 2016-06-28 10:54:55 -03:00
data-convert.h perf data ctf: Add 'all' option 2016-06-28 10:54:56 -03:00
data.c tools: Introduce str_error_r() 2016-07-12 15:19:47 -03:00
data.h perf data: Add perf_data_file__switch() helper 2016-04-14 08:57:54 -03:00
db-export.c perf thread: Adopt get_main_thread from db-export.c 2016-05-30 12:41:43 -03:00
db-export.h perf script: Add call path id to exported sample in db export 2016-05-06 13:00:53 -03:00
debug.c tools: Introduce tools/include/linux/time64.h for *SEC_PER_*SEC macros 2016-08-23 15:37:33 -03:00
debug.h tools: Introduce str_error_r() 2016-07-12 15:19:47 -03:00
demangle-java.c perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-java.h perf symbols: add Java demangling support 2016-02-05 09:46:45 -03:00
demangle-rust.c perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
demangle-rust.h perf symbols: Add Rust demangling 2016-07-12 16:12:38 -03:00
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 perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
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 perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
env.h perf header: Transform nodes string info to struct 2016-07-04 19:39:01 -03:00
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_fprintf.c perf script: Fix vanished idle symbols 2016-09-29 11:17:00 -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
find-vdso-map.c
genelf_debug.c perf jit: add source line info support 2016-02-05 12:33:09 -03:00
genelf.c perf jit: add source line info support 2016-02-05 12:33:09 -03:00
genelf.h perf jit: genelf makes assumptions about endian 2016-03-30 18:12:06 -03:00
generate-cmdlist.sh perf tools: Do not show trace command if it's not compiled in 2016-01-08 12:46:17 -03:00
group.h perf stat: Basic support for TopDown in perf stat 2016-06-06 17:04:15 -03:00
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 perf tools: Uninline scnprintf() and vscnprint() 2016-07-12 15:20:24 -03:00
help-unknown-cmd.h perf tools: Move help_unknown_cmd() to its own file 2015-12-14 12:30:37 -03:00
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 perf intlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:39:19 -03:00
jit.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
jitdump.c perf jitdump: Add the right header to get the major()/minor() definitions 2016-08-15 13:10:28 -03:00
jitdump.h perf jit: Add support for using TSC as a timestamp 2016-04-01 18:42:55 -03:00
kvm-stat.h perf kvm/powerpc: Port perf kvm stat to powerpc 2016-01-29 17:49:54 -03:00
levenshtein.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
levenshtein.h
llvm-utils.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
llvm-utils.h perf llvm: Allow dump llvm output object file using llvm.dump-obj 2016-06-21 13:18:34 -03:00
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 perf mem: Add --ldlat option 2016-06-15 10:35:27 -03:00
mem-events.h perf mem: Add --ldlat option 2016-06-15 10:35:27 -03:00
ordered-events.c perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
ordered-events.h perf ordered_events: Introduce reinit() 2016-04-14 08:57:54 -03:00
parse-branch-options.c perf subcmd: Create subcmd library 2015-12-17 14:27:14 -03:00
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 perf subcmd: Create subcmd library 2015-12-17 14:27:14 -03:00
parse-regs-options.h
path.c perf tools: Remove needless includes from cache.h 2016-07-12 15:19:58 -03:00
perf_regs.c perf tools: Fix perf regs mask generation 2016-05-11 21:54:06 +10:00
perf_regs.h
PERF-VERSION-GEN
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 perf quote: Disentangle headers 2016-07-12 15:19:55 -03:00
quote.h perf quote: Disentangle headers 2016-07-12 15:19:55 -03:00
rb_resort.h perf rb_resort: Rename for_each() macros to for_each_entry() 2016-06-23 11:35:07 -03:00
rblist.c
rblist.h
record.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
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 perf evsel: Move some methods from session.[ch] to evsel.[ch] 2016-04-13 10:11:52 -03:00
setup.py perf tools: Fix python extension build 2016-02-29 11:18:25 -03:00
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 perf stat: Add computation of TopDown formulas 2016-06-06 17:04:16 -03:00
stat.c perf evlist: Rename for_each() macros to for_each_entry() 2016-06-23 11:26:15 -03:00
stat.h perf stat: Add computation of TopDown formulas 2016-06-06 17:04:16 -03:00
strbuf.c perf strbuf: Add missing headers 2016-07-12 15:19:55 -03:00
strbuf.h perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
strfilter.c
strfilter.h
string.c tools: Adopt memdup() from tools/perf, moving it to tools/lib/string.c 2015-11-18 17:51:02 -03:00
strlist.c perf tools: Add file_only config option to strlist 2016-01-12 12:42:07 -03:00
strlist.h perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
svghelper.c perf timechart: Use NSEC_PER_U?SEC 2016-08-23 15:37:33 -03:00
svghelper.h perf tools: Remove needless 'extern' from function prototypes 2016-03-23 15:06:35 -03:00
symbol_fprintf.c perf symbols: Move fprintf routines to separate object file 2016-04-14 19:46:53 -03:00
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
syscalltbl.c perf tools: Build syscall table .c header from kernel's syscall_64.tbl 2016-04-08 09:58:14 -03:00
syscalltbl.h perf tools: Allow generating per-arch syscall table arrays 2016-04-08 09:58:14 -03:00
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 perf tools: Move term functions out of util.c 2015-12-09 13:42:02 -03:00
term.h perf tools: Move term functions out of util.c 2015-12-09 13:42:02 -03:00
thread_map.c perf tools: Rename strlist_for_each() macros to for_each_entry() 2016-06-23 11:35:01 -03:00
thread_map.h perf thread_map: Make new_by_tid_str constructor public 2016-04-13 10:11:51 -03:00
thread-stack.c perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread-stack.h perf script: Add callindent option 2016-06-23 17:04:26 -03:00
thread.c perf tools: Experiment with cppcheck 2016-10-03 11:24:13 -03:00
thread.h perf unwind: Move unwind__prepare_access from thread_new into thread__insert_map 2016-06-07 12:08:52 -03:00
tool.h perf tools: Add time conversion event 2016-03-31 10:52:24 -03:00
top.c
top.h perf top: Use machine->kptr_restrict_warned 2016-05-20 11:43:55 -03:00
trace-event-info.c
trace-event-parse.c irq_poll: make blk-iopoll available outside the block layer 2015-12-11 11:52:24 -08:00
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 perf tools: Introduce trigger class 2016-04-28 09:58:58 -03:00
tsc.c perf tools: Use 64-bit shifts with (TSC) time conversion 2016-03-08 10:11:18 +01:00
tsc.h perf jit: Add support for using TSC as a timestamp 2016-04-01 18:42:55 -03:00
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 perf callchain: Add order support for libdw DWARF unwinder 2015-11-23 18:31:13 -03:00
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 perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
unwind.h perf unwind: Add initialized arg into unwind__prepare_access 2016-07-04 20:27:12 -03:00
usage.c perf tools: Simplify die() mechanism 2016-03-23 12:32:31 -03:00
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 perf tools: Find right DSO taking into account if binary is 32 or 64-bit 2016-06-23 10:25:58 -03:00
vdso.h
xyarray.c
xyarray.h
zlib.c