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-v2 * https://reviews.llvm.org/D83289 but they should go in after the libbpf part is integrated. --- v0: https://lore.kernel.org/bpf/20210210030317.78820-1-iii@xxxxxxxxxxxxx/ v0 -> v1: Per Andrii's suggestion, remove the unnecessary trailing u32. Based on Alexei's feedback [1] I'm proceeding with the BTF_KIND_FLOAT approach. [1] https://lore.kernel.org/bpf/CAADnVQKWPODWZ2RSJ5FJhfYpxkuV0cvSAL1O+FSr9oP1ercoBg@xxxxxxxxxxxxxx/ 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 | 17 +++- include/uapi/linux/btf.h | 5 +- kernel/bpf/btf.c | 66 ++++++++++++++- tools/bpf/bpftool/btf.c | 8 ++ tools/bpf/bpftool/btf_dumper.c | 1 + tools/include/uapi/linux/btf.h | 5 +- tools/lib/bpf/btf.c | 44 ++++++++++ tools/lib/bpf/btf.h | 8 ++ tools/lib/bpf/btf_dump.c | 4 + tools/lib/bpf/libbpf.c | 29 ++++++- tools/lib/bpf/libbpf.map | 5 ++ tools/lib/bpf/libbpf_internal.h | 2 + tools/testing/selftests/bpf/btf_helpers.c | 4 + tools/testing/selftests/bpf/prog_tests/btf.c | 84 ++++++++++++++++++++ tools/testing/selftests/bpf/test_btf.h | 3 + 15 files changed, 276 insertions(+), 9 deletions(-) -- 2.29.2