This patchset introduces a new standalone tool for pre-validating eBPF
programs and debugging validation problems. Its should allow developers
to trace validator state changes per instruction and understand verifier
decisions, simplifying the debugging of rejected programs before loading
them into a real application context.
v3:
* addressed another FreeBSD issue (spurious uninitialized warning);
* addressed more AI comments:
* fail if library fails to set step catchpoint on start command;
* fail nicer if external variables are too big;
* fail nicer if EAL initialization or cleanup fails;
* explain why 9 steps are expeced in the test;
* explain that non-zero buf_size marks mbuf;
* avoid symbols starting with `RTE_` in the app;
v2:
* for FreeBSD compatibility switched from Linux to DPDK network structs;
* addressed small AI comments:
* clarified patch 1 commit message;
* renamed `rte_validate_bpf_logtype` to `validate_bpf_logtype`;
* corrected comment to an internal-use-only function to reflect that
next-after-last value of the program counter is no longer allowed;
Marat Khalili (7):
bpf/validate: fix finished status on restart
bpf/validate: refactor internal step function
bpf/validate: formalize call back requirements
bpf/validate: add jump notification events
bpf/validate: add get current event API
app/test: add test for bpf validate debug events
app/validate-bpf: add BPF validation application
MAINTAINERS | 2 +
app/meson.build | 1 +
app/test/test_bpf_validate.c | 344 +++++++-
app/validate-bpf/alloc_list.c | 53 ++
app/validate-bpf/args.c | 263 ++++++
app/validate-bpf/debug.c | 1103 ++++++++++++++++++++++++
app/validate-bpf/debug_command.c | 383 ++++++++
app/validate-bpf/debug_command.h | 65 ++
app/validate-bpf/eal_init_args.c | 57 ++
app/validate-bpf/internal.h | 151 ++++
app/validate-bpf/main.c | 90 ++
app/validate-bpf/meson.build | 13 +
app/validate-bpf/parse_decl.c | 623 +++++++++++++
doc/guides/rel_notes/release_26_11.rst | 5 +
doc/guides/tools/index.rst | 1 +
doc/guides/tools/validate_bpf.rst | 97 +++
lib/bpf/bpf_validate.c | 49 +-
lib/bpf/bpf_validate_debug.c | 92 +-
lib/bpf/bpf_validate_debug.h | 12 +-
lib/bpf/rte_bpf_validate_debug.h | 42 +-
20 files changed, 3380 insertions(+), 66 deletions(-)
create mode 100644 app/validate-bpf/alloc_list.c
create mode 100644 app/validate-bpf/args.c
create mode 100644 app/validate-bpf/debug.c
create mode 100644 app/validate-bpf/debug_command.c
create mode 100644 app/validate-bpf/debug_command.h
create mode 100644 app/validate-bpf/eal_init_args.c
create mode 100644 app/validate-bpf/internal.h
create mode 100644 app/validate-bpf/main.c
create mode 100644 app/validate-bpf/meson.build
create mode 100644 app/validate-bpf/parse_decl.c
create mode 100644 doc/guides/tools/validate_bpf.rst
--
2.43.0