mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
211ab78f76
Split BTF objects are typically BTF objects for kernel modules, which are incrementally built on top of kernel BTF instead of redefining all kernel symbols they need. We can use bpftool with its -B command-line option to dump split BTF objects. It works well when the handle provided for the BTF object to dump is a "path" to the BTF object, typically under /sys/kernel/btf, because bpftool internally calls btf__parse_split() which can take a "base_btf" pointer and resolve the BTF reconstruction (although in that case, the "-B" option is unnecessary because bpftool performs autodetection). However, it did not work so far when passing the BTF object through its id, because bpftool would call btf__get_from_id() which did not provide a way to pass a "base_btf" pointer. In other words, the following works: # bpftool btf dump file /sys/kernel/btf/i2c_smbus -B /sys/kernel/btf/vmlinux But this was not possible: # bpftool btf dump id 6 -B /sys/kernel/btf/vmlinux The libbpf API has recently changed, and btf__get_from_id() has been deprecated in favour of btf__load_from_kernel_by_id() and its version with support for split BTF, btf__load_from_kernel_by_id_split(). Let's update bpftool to make it able to dump the BTF object in the second case as well. Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: John Fastabend <john.fastabend@gmail.com> Link: https://lore.kernel.org/bpf/20210729162028.29512-9-quentin@isovalent.com |
||
---|---|---|
.. | ||
bash-completion | ||
Documentation | ||
skeleton | ||
.gitignore | ||
btf_dumper.c | ||
btf.c | ||
cfg.c | ||
cfg.h | ||
cgroup.c | ||
common.c | ||
feature.c | ||
gen.c | ||
iter.c | ||
jit_disasm.c | ||
json_writer.c | ||
json_writer.h | ||
link.c | ||
main.c | ||
main.h | ||
Makefile | ||
map_perf_ring.c | ||
map.c | ||
net.c | ||
netlink_dumper.c | ||
netlink_dumper.h | ||
perf.c | ||
pids.c | ||
prog.c | ||
struct_ops.c | ||
tracelog.c | ||
xlated_dumper.c | ||
xlated_dumper.h |