bpftool v7.0
Note
Bpftool's version number is aligned on libbpf's version number (with an offset). The change of major version number for the current release reflects libbpf's bump (v1.0.0), but is not necessarily synonym of breaking changes in bpftool - although we do have one in this release.
Breaking change
- Given that bpftool now relies on libbpf to provide the string names for various BPF objects, the names of cgroup attach types as displayed with
bpftool cgroup showmay have changed. The former names were defined in bpftool here, now they come from libbpf, here.
New features
- Implement
bpftool cgroup treeforBPF_LSM_CGROUP - Use strings provided by libbpf for program types, map types, attach types, link types, instead of redefining them in bpftool, including for parsing these types from the command line
- Add
bpftool feature list_builtinsto list program, map, attach, or link types known to libbpf (but independent from what the system supports), to allow iterating on these types in scripts, and use this in bash completion - Support passing longer strings for referencing programs by name on the command line, now that the kernel can use longer names with BTF
- Add support for
BTF_KIND_ENUM64in BTF - Add support for
BTF_KIND_RESTRICTforbpftool gen min_core_btf - Support
BPF_CORE_TYPE_MATCHESrelocations, forbpftool gen min_core_btf - Indicate that a pinned object is a BPF link (when relevant) instead of “unknown” when passing a pinned path to an incorrect object type on the command line
Bug fixes
- Fix compilation with libbfd 2.39 and newer, following a change of interface of the function used to initialise the context for the disassembler and which needs an additional printer for styled output
- Fix
feature-libbfd-liberty-zdetection in the mirror's Makefile - Fix bootstrap for cross-compilation, by passing down the host
arto libbpf's Makefile - Clean
errnoat the beginning of the program execution to clean up after the checks performed by libcap < 2.63 and avoid breaking the batch mode - Check for
NULLpointer incodegen_asserts()to avoid aNULLpointer dereference on skeleton generation - Revert the switch to libbpf's API to lift the memlock rlimit restriction, as detection for cgroup-based memory accounting would fail in some corner cases, and implement instead a more thorough probe in bpftool to check whether we need to lift the rlimit
- Do not return value from void function in skeleton, which would produce a warning
Other internal changes
- Remove zlib feature test from Makefile
- Do not print the result of the
disassembler-four-argsfeature test when building bpftool - Replace the use of multiple
sizeof()byARRAY_SIZE()on the array of metrics in prog.c - Remove outdated
attach_type_nameforward declaration in main.h - Fix a typo in a comment, which would reference the wrong library (libpcap/libcap)
- CI: Build on several runners (Ubuntu 18.04, 20.04, 22.04)
- README.md: Fix a broken link
Known bugs
- Some features requiring the use of “skeletons” (
feature-clang-bpf-co-recompilation option) require kernel 5.15 or more recent, withCONFIG_PERF_EVENTSset, to compile bpftool (#17). - Map dumps with BTF information may print erroneous values for
boolfields inside of a struct (#38).
Full Changelog: v6.8.0...v7.0.0