Em Mon, Apr 16, 2018 at 12:33:17PM -0700, Martin KaFai Lau escreveu: > This patch introduces BPF Type Format (BTF). > > BTF (BPF Type Format) is the meta data format which describes > the data types of BPF program/map. Hence, it basically focus > on the C programming language which the modern BPF is primary > using. The first use case is to provide a generic pretty print > capability for a BPF map. > > A modified pahole (Cc: Arnaldo) that can convert dwarf to BTF is here: > https://github.com/iamkafai/pahole/tree/btf
Thanks for CCing me, no changes since when you posted the pahole patches, I gave it a quick look, seems sane, will try to merge and push a new pahole version out so that distros can pick it, at least fedora will 8-) - Arnaldo > Please see individual patch for details. > > v3: > - Rebase to bpf-next > - Fix sparse warning (by adding static) > - Add BTF header logging: btf_verifier_log_hdr() > - Fix the alignment test on btf->type_off > - Add tests for the BTF header > - Lower the max BTF size to 16MB. It should be enough > for some time. We could raise it later if it would > be needed. > > v2: > - Use kvfree where needed in patch 1 and 2 > - Also consider BTF_INT_OFFSET() in the btf_int_check_meta() > in patch 1 > - Fix an incorrect goto target in map_create() during > the btf-error-path in patch 7 > - re-org some local vars to keep the rev xmas tree in btf.c > > Martin KaFai Lau (10): > bpf: btf: Introduce BPF Type Format (BTF) > bpf: btf: Validate type reference > bpf: btf: Check members of struct/union > bpf: btf: Add pretty print capability for data with BTF type info > bpf: btf: Add BPF_BTF_LOAD command > bpf: btf: Add BPF_OBJ_GET_INFO_BY_FD support to BTF fd > bpf: btf: Add pretty print support to the basic arraymap > bpf: btf: Sync bpf.h and btf.h to tools/ > bpf: btf: Add BTF support to libbpf > bpf: btf: Add BTF tests > > include/linux/bpf.h | 20 +- > include/linux/btf.h | 48 + > include/uapi/linux/bpf.h | 12 + > include/uapi/linux/btf.h | 132 ++ > kernel/bpf/Makefile | 1 + > kernel/bpf/arraymap.c | 50 + > kernel/bpf/btf.c | 2093 > ++++++++++++++++++++++++++ > kernel/bpf/inode.c | 146 +- > kernel/bpf/syscall.c | 51 +- > tools/include/uapi/linux/bpf.h | 13 + > tools/include/uapi/linux/btf.h | 132 ++ > tools/lib/bpf/Build | 2 +- > tools/lib/bpf/bpf.c | 92 +- > tools/lib/bpf/bpf.h | 16 + > tools/lib/bpf/btf.c | 377 +++++ > tools/lib/bpf/btf.h | 22 + > tools/lib/bpf/libbpf.c | 148 +- > tools/lib/bpf/libbpf.h | 3 + > tools/testing/selftests/bpf/Makefile | 26 +- > tools/testing/selftests/bpf/test_btf.c | 1669 ++++++++++++++++++++ > tools/testing/selftests/bpf/test_btf_haskv.c | 48 + > tools/testing/selftests/bpf/test_btf_nokv.c | 43 + > 22 files changed, 5103 insertions(+), 41 deletions(-) > create mode 100644 include/linux/btf.h > create mode 100644 include/uapi/linux/btf.h > create mode 100644 kernel/bpf/btf.c > create mode 100644 tools/include/uapi/linux/btf.h > create mode 100644 tools/lib/bpf/btf.c > create mode 100644 tools/lib/bpf/btf.h > create mode 100644 tools/testing/selftests/bpf/test_btf.c > create mode 100644 tools/testing/selftests/bpf/test_btf_haskv.c > create mode 100644 tools/testing/selftests/bpf/test_btf_nokv.c > > -- > 2.9.5