Based on kernel version 6.12.4
. Page generated on 2024-12-12 21:01 EST
.
1 2 3 4 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 | .. contents:: .. sectnum:: ========================== Clang implementation notes ========================== This document provides more details specific to the Clang/LLVM implementation of the eBPF instruction set. Versions ======== Clang defined "CPU" versions, where a CPU version of 3 corresponds to the current eBPF ISA. Clang can select the eBPF ISA version using ``-mcpu=v3`` for example to select version 3. Arithmetic instructions ======================= For CPU versions prior to 3, Clang v7.0 and later can enable ``BPF_ALU`` support with ``-Xclang -target-feature -Xclang +alu32``. In CPU version 3, support is automatically included. Jump instructions ================= If ``-O0`` is used, Clang will generate the ``BPF_CALL | BPF_X | BPF_JMP`` (0x8d) instruction, which is not supported by the Linux kernel verifier. Atomic operations ================= Clang can generate atomic instructions by default when ``-mcpu=v3`` is enabled. If a lower version for ``-mcpu`` is set, the only atomic instruction Clang can generate is ``BPF_ADD`` *without* ``BPF_FETCH``. If you need to enable the atomics features, while keeping a lower ``-mcpu`` version, you can use ``-Xclang -target-feature -Xclang +alu32``. |