Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78262f45 authored by Daniel Borkmann's avatar Daniel Borkmann Committed by Alexei Starovoitov
Browse files

bpf, doc: add description wrt native/bpf clang target and pointer size

As this recently came up on netdev [0], lets add it to the BPF devel doc.

  [0] https://www.spinics.net/lists/netdev/msg489612.html



Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent d48ce3e5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -539,6 +539,18 @@ A: Although LLVM IR generation and optimization try to stay architecture
       The clang option "-fno-jump-tables" can be used to disable
       switch table generation.

     - For clang -target bpf, it is guaranteed that pointer or long /
       unsigned long types will always have a width of 64 bit, no matter
       whether underlying clang binary or default target (or kernel) is
       32 bit. However, when native clang target is used, then it will
       compile these types based on the underlying architecture's conventions,
       meaning in case of 32 bit architecture, pointer or long / unsigned
       long types e.g. in BPF context structure will have width of 32 bit
       while the BPF LLVM back end still operates in 64 bit. The native
       target is mostly needed in tracing for the case of walking pt_regs
       or other kernel structures where CPU's register width matters.
       Otherwise, clang -target bpf is generally recommended.

   You should use default target when:

     - Your program includes a header file, e.g., ptrace.h, which eventually