]> git.baikalelectronics.ru Git - kernel.git/commit
perf clang: Compile BPF script using builtin clang support
authorWang Nan <wangnan0@huawei.com>
Sat, 26 Nov 2016 07:03:39 +0000 (07:03 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 5 Dec 2016 18:51:45 +0000 (15:51 -0300)
commit3bc64da075827dea7ec1fe2f7dd38603cf65fa3a
treed54f227be186c8c268dc17e339d10606a818a4a0
parent8eac898d1ca33faf7fdd42f0f35a63d70195ebcd
perf clang: Compile BPF script using builtin clang support

After this patch, perf utilizes builtin clang support to build BPF
script, no longer depend on external clang, but fallbacking to it
if for some reason the builtin compiling framework fails.

Test:

  $ type clang
  -bash: type: clang: not found
  $ cat ~/.perfconfig
  $ echo '#define LINUX_VERSION_CODE 0x040700' > ./test.c
  $ cat ./tools/perf/tests/bpf-script-example.c >> ./test.c
  $ ./perf record -v --dry-run -e ./test.c 2>&1 | grep builtin
  bpf: successfull builtin compilation
  $

Can't pass cflags so unable to include kernel headers now. Will be fixed
by following commits.

Committer notes:

Make sure '-v' comes before the '-e ./test.c' in the command line otherwise the
'verbose' variable will not be set when the bpf event is parsed and thus the
pr_debug indicating a 'successfull builtin compilation' will not be output, as
the debug level (1) will be less than what 'verbose' has at that point (0).

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Joe Stringer <joe@ovn.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/20161126070354.141764-16-wangnan0@huawei.com
[ Spell check/reflow successfull pr_debug string ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/bpf-loader.c
tools/perf/util/c++/clang-c.h
tools/perf/util/c++/clang.cpp