Some BPF programs compiled on s390 fail to load, because s390 arch-specific linux headers contain float and double types. Introduce support for such types by representing them using the new BTF_KIND_FLOAT. This series deals with libbpf, bpftool, in-kernel BTF parser as well as selftests and documentation. There are also pahole and LLVM parts: * https://github.com/iii-i/dwarves/commit/btf-kind-float-v1 * https://reviews.llvm.org/D83289 but they should go in after the libbpf part is integrated. There is also an open question: should we go forward with BTF_KIND_FLOAT, or should this be merely a BTF_KIND_INT encoding? The argument for BTF_KIND_FLOAT is that it's more explicit and therefore less prone to unintentional mixups. The argument for BTF_KIND_INT encoding is that there would be less code and the overall integration process would be simpler. Ilya Leoshkevich (6): bpf: Add BTF_KIND_FLOAT to uapi libbpf: Add BTF_KIND_FLOAT support tools/bpftool: Add BTF_KIND_FLOAT support bpf: Add BTF_KIND_FLOAT support selftest/bpf: Add BTF_KIND_FLOAT tests bpf: Document BTF_KIND_FLOAT in btf.rst Documentation/bpf/btf.rst | 19 ++- include/uapi/linux/btf.h | 10 +- kernel/bpf/btf.c | 101 ++++++++++++- tools/bpf/bpftool/btf.c | 13 ++ tools/bpf/bpftool/btf_dumper.c | 1 + tools/include/uapi/linux/btf.h | 10 +- tools/lib/bpf/btf.c | 85 ++++++++--- tools/lib/bpf/btf.h | 13 ++ tools/lib/bpf/btf_dump.c | 4 + tools/lib/bpf/libbpf.c | 32 +++- tools/lib/bpf/libbpf.map | 5 + tools/lib/bpf/libbpf_internal.h | 4 + tools/testing/selftests/bpf/btf_helpers.c | 4 + tools/testing/selftests/bpf/prog_tests/btf.c | 145 +++++++++++++++++++ tools/testing/selftests/bpf/test_btf.h | 5 + 15 files changed, 418 insertions(+), 33 deletions(-) -- 2.29.2