• Quentin Monnet's avatar
    tools: bpftool: Print optional built-in features along with version · 82b8cf0a
    Quentin Monnet authored
    Bpftool has a number of features that can be included or left aside
    during compilation. This includes:
    
    - Support for libbfd, providing the disassembler for JIT-compiled
      programs.
    - Support for BPF skeletons, used for profiling programs or iterating on
      the PIDs of processes associated with BPF objects.
    
    In order to make it easy for users to understand what features were
    compiled for a given bpftool binary, print the status of the two
    features above when showing the version number for bpftool ("bpftool -V"
    or "bpftool version"). Document this in the main manual page. Example
    invocations:
    
        $ bpftool version
        ./bpftool v5.9.0-rc1
        features: libbfd, skeletons
    
        $ bpftool -p version
        {
            "version": "5.9.0-rc1",
            "features": {
                "libbfd": true,
                "skeletons": true
            }
        }
    
    Some other parameters are optional at compilation
    ("DISASM_FOUR_ARGS_SIGNATURE", LIBCAP support) but they do not impact
    significantly bpftool's behaviour from a user's point of view, so their
    status is not reported.
    
    Available commands and supported program types depend on the version
    number, and are therefore not reported either. Note that they are
    already available, albeit without JSON, via bpftool's help messages.
    
    v3:
    - Use a simple list instead of boolean values for plain output.
    
    v2:
    - Fix JSON (object instead or array for the features).
    Signed-off-by: default avatarQuentin Monnet <quentin@isovalent.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20200909162500.17010-2-quentin@isovalent.com
    82b8cf0a
bpftool.rst 2.77 KB