From: Josef Bacik <josef@toxicpanda.com>
To: bpf@vger.kernel.org
Subject: [PATCH v4 0/3] libbpf/bpftool: support merging split BTFs
Date: Fri, 20 Feb 2026 17:43:56 -0500 [thread overview]
Message-ID: <cover.1771625484.git.josef@toxicpanda.com> (raw)
v1: https://lore.kernel.org/bpf/cover.1771605821.git.josef@toxicpanda.com/
v2: https://lore.kernel.org/bpf/cover.1771616227.git.josef@toxicpanda.com/
v3: https://lore.kernel.org/bpf/cover.1771622266.git.josef@toxicpanda.com/
v1->v2:
- Added a btf__dedup() call to btf__add_btf() to ensure that we don't have
duplicate types in the merged BTF.
v2->v3:
- AI review got confused about the UAF comment, so the comment was expanded to
clarify the UAF potential.
- Fixed potential clobbering of errno in the error path.
v3->v4:
- Fixed a potential silent corruption pointed out by the AI review bot.
--- Original email ---
Hello,
I'm extending systing to do introspection on vfio devices, which requires having
the structs I need from the kernel available in userspace. Normally these are
loadable modules, but in the case of vfio there's multiple structs across
multiple modules. Normally you'd do the following to generate your vmlinux.h
with a module
bpftool btf dump file /sys/kernel/btf/<module> format c \
--base /sys/kernel/btf/vmlinux > vmlinux.h
but if you need multiple modules you have to hack together multiple dumps and
merge them together. This patch series adds support for merging multiple BTF
sources together, so you can do
bpftool btf dump file /sys/kernel/btf/<module1> \
file /sys/kernel/btf/<module2> format c \
--base /sys/kernel/btf/vmlinux > vmlinux.h
I tested this with my usecase and it works. Thanks,
Josef
Josef Bacik (3):
libbpf: support appending split BTF in btf__add_btf()
bpftool: support merging multiple module BTFs in btf dump
selftests/bpf: add test for btf__add_btf() with split BTF sources
tools/bpf/bpftool/btf.c | 135 ++++++++++++++++--
tools/lib/bpf/btf.c | 44 ++++--
.../selftests/bpf/prog_tests/btf_write.c | 89 ++++++++++++
3 files changed, 247 insertions(+), 21 deletions(-)
--
2.53.0
next reply other threads:[~2026-02-20 22:44 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-20 22:43 Josef Bacik [this message]
2026-02-20 22:43 ` [PATCH v4 1/3] libbpf: support appending split BTF in btf__add_btf() Josef Bacik
2026-02-23 17:52 ` Andrii Nakryiko
2026-02-23 17:55 ` Andrii Nakryiko
2026-02-23 17:56 ` Andrii Nakryiko
2026-02-20 22:43 ` [PATCH v4 2/3] bpftool: support merging multiple module BTFs in btf dump Josef Bacik
2026-02-22 22:16 ` Alan Maguire
2026-02-23 11:50 ` Quentin Monnet
2026-02-20 22:43 ` [PATCH v4 3/3] selftests/bpf: add test for btf__add_btf() with split BTF sources Josef Bacik
2026-02-20 23:07 ` Alexei Starovoitov
2026-02-22 20:43 ` Josef Bacik
2026-02-22 22:23 ` Alan Maguire
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1771625484.git.josef@toxicpanda.com \
--to=josef@toxicpanda.com \
--cc=bpf@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox