Re: [GIT PULL 0/6] perf/core improvements and fixes

From: Alexei Starovoitov
Date: Thu Jun 04 2015 - 12:22:32 EST


On 6/4/15 7:04 AM, Ingo Molnar wrote:
> # perf record -e bpf_source.c cmdline
>
> to create a eBPF filter from source,
>
>Use
>
># perf record -e bpf_object.o cmdline
>
>to create a eBPF filter from object intermedia.
>
>Use
>
># perf bpf compile bpf_source.c --kbuild=kernel-build-dir -o bpf_object.o
>
>to create the .o
>
>I think this should be enough. Currently only the second case has been implemented.
So if users cannot actually generate .o files then it's premature to merge this in
such an incomplete form!

It should be possible to use a feature that we are merging.

of course it's usable :) There is some confusion here.
To compile .c into .o one can easily use
clang -O2 -emit-llvm -c file.c -o - | llc -march=bpf -o file.o
any version of clang is ok,
llc needs to be fresh with bpf backend.

For a lot of cases kernel headers are not needed, so above
will work fine.
For our TC examples we recommend to use 'bcc' alias:
bcc() {
clang -O2 -emit-llvm -c $1 -o - | llc -march=bpf -filetype=obj -o "`basename $1 .c`.o"
}
then compiling as easy as 'bcc file.c'

What Wang mentioned that we're working on is fully integrated 'bcc'.
It will use clang/llvm as libraries, so no intermediate steps will
be needed, but some folks will always have concerns about
ultra-embedded environments where even 20Mb of libllvm.so is too much.

So I think we need to support both 'perf record -e file.[co]'

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/