|
@@ -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
|