diff options
author | Daniel Borkmann <daniel@iogearbox.net> | 2018-03-20 00:21:15 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-03-20 23:47:45 +0100 |
commit | 78262f4575c29f185947fe58952cd1beabc74f82 (patch) | |
tree | d25461aba3c6fbddcfc3a2cfaa582de422893f8f /Documentation | |
parent | Merge branch 'bpf-sockmap-ulp' (diff) | |
download | linux-78262f4575c29f185947fe58952cd1beabc74f82.tar.xz linux-78262f4575c29f185947fe58952cd1beabc74f82.zip |
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: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/bpf/bpf_devel_QA.txt | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Documentation/bpf/bpf_devel_QA.txt b/Documentation/bpf/bpf_devel_QA.txt index 84cbb302f2b5..1a0b704e1a38 100644 --- a/Documentation/bpf/bpf_devel_QA.txt +++ b/Documentation/bpf/bpf_devel_QA.txt @@ -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 |