Blame view

samples/bpf/README.rst 1.93 KB
1c97566d5   Jesper Dangaard Brouer   samples/bpf: add ...
1
2
  eBPF sample programs
  ====================
43371c83f   Joe Stringer   samples/bpf: Swit...
3
4
  This directory contains a test stubs, verifier test-suite and examples
  for using eBPF. The examples use libbpf from tools/lib/bpf.
1c97566d5   Jesper Dangaard Brouer   samples/bpf: add ...
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  
  Build dependencies
  ==================
  
  Compiling requires having installed:
   * clang >= version 3.4.0
   * llvm >= version 3.7.1
  
  Note that LLVM's tool 'llc' must support target 'bpf', list version
  and supported targets with command: ``llc --version``
  
  Kernel headers
  --------------
  
  There are usually dependencies to header files of the current kernel.
  To avoid installing devel kernel headers system wide, as a normal
  user, simply call::
  
   make headers_install
  
  This will creates a local "usr/include" directory in the git/build top
  level directory, that the make system automatically pickup first.
  
  Compiling
  =========
  
  For building the BPF samples, issue the below command from the kernel
  top level directory::
  
   make samples/bpf/
  
  Do notice the "/" slash after the directory name.
b62a796c1   Jesper Dangaard Brouer   samples/bpf: allo...
37
38
  It is also possible to call make from this directory.  This will just
  hide the the invocation of make as above with the appended "/".
1c97566d5   Jesper Dangaard Brouer   samples/bpf: add ...
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  Manually compiling LLVM with 'bpf' support
  ------------------------------------------
  
  Since version 3.7.0, LLVM adds a proper LLVM backend target for the
  BPF bytecode architecture.
  
  By default llvm will build all non-experimental backends including bpf.
  To generate a smaller llc binary one can use::
  
   -DLLVM_TARGETS_TO_BUILD="BPF"
  
  Quick sniplet for manually compiling LLVM and clang
  (build dependencies are cmake and gcc-c++)::
  
   $ git clone http://llvm.org/git/llvm.git
   $ cd llvm/tools
   $ git clone --depth 1 http://llvm.org/git/clang.git
   $ cd ..; mkdir build; cd build
   $ cmake .. -DLLVM_TARGETS_TO_BUILD="BPF;X86"
   $ make -j $(getconf _NPROCESSORS_ONLN)
bdefbbf2e   Jesper Dangaard Brouer   samples/bpf: like...
59
60
  It is also possible to point make to the newly compiled 'llc' or
  'clang' command via redefining LLC or CLANG on the make command line::
1c97566d5   Jesper Dangaard Brouer   samples/bpf: add ...
61

bdefbbf2e   Jesper Dangaard Brouer   samples/bpf: like...
62
   make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang