linux/tools
Andrii Nakryiko d7c4b3980c libbpf: detect supported kernel BTF features and sanitize BTF
Depending on used versions of libbpf, Clang, and kernel, it's possible to
have valid BPF object files with valid BTF information, that still won't
load successfully due to Clang emitting newer BTF features (e.g.,
BTF_KIND_FUNC, .BTF.ext's line_info/func_info, BTF_KIND_DATASEC, etc), that
are not yet supported by older kernel.

This patch adds detection of BTF features and sanitizes BPF object's BTF
by substituting various supported BTF kinds, which have compatible layout:
  - BTF_KIND_FUNC -> BTF_KIND_TYPEDEF
  - BTF_KIND_FUNC_PROTO -> BTF_KIND_ENUM
  - BTF_KIND_VAR -> BTF_KIND_INT
  - BTF_KIND_DATASEC -> BTF_KIND_STRUCT

Replacement is done in such a way as to preserve as much information as
possible (names, sizes, etc) where possible without violating kernel's
validation rules.

v2->v3:
  - remove duplicate #defines from libbpf_util.h

v1->v2:
  - add internal libbpf_internal.h w/ common stuff
  - switch SK storage BTF to use new libbpf__probe_raw_btf()

Reported-by: Alexei Starovoitov <ast@fb.com>
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2019-05-13 01:31:20 +02:00
..
accounting
arch arch/csky perf unwind libdw patch for v5.2-rc1 2019-05-09 13:28:26 -07:00
bpf bpftool: exclude bash-completion/bpftool from .gitignore pattern 2019-05-04 23:43:57 -07:00
build tools build: Implement libzstd feature check, LIBZSTD_DIR and NO_LIBZSTD defines 2019-04-01 15:18:10 -03:00
cgroup
crypto
debugging
firewire
firmware
gpio
hv
iio Merge 5.0-rc6 into staging-next 2019-02-11 09:25:01 +01:00
include tools: bpf: synchronise BPF UAPI header with tools 2019-05-13 01:12:45 +02:00
io_uring tools/io_uring: remove IOCQE_FLAG_CACHEHIT 2019-04-08 10:48:50 -06:00
kvm/kvm_stat
laptop
leds
lib libbpf: detect supported kernel BTF features and sanitize BTF 2019-05-13 01:31:20 +02:00
memory-model tools/memory-model: Add support for synchronize_srcu_expedited() 2019-04-04 13:48:34 -07:00
nfsd
objtool A reasonably busy cycle for docs, including: 2019-05-08 12:42:50 -07:00
pci
pcmcia
perf arch/csky perf unwind libdw patch for v5.2-rc1 2019-05-09 13:28:26 -07:00
power ACPICA: Rename nameseg length macro/define for clarity 2019-04-09 11:24:48 +02:00
scripts
spi
testing selftests: bpf: Add files generated after build to .gitignore 2019-05-13 01:16:37 +02:00
thermal/tmon
time
usb
virtio
vm tools/vm/slabinfo: clean up usage menu debug items 2019-03-05 21:07:20 -08:00
wmi
Makefile