2019-04-25 09:55 UTC-0700 ~ Andrii Nakryiko <andriin@xxxxxx>
This patch set adds a new `bpftool btf dump` sub-command, which allows to dump
BTF contents (only types for now). Currently it only outputs low-level
content, almost 1:1 with binary BTF format, but follow up patches will add
ability to dump BTF types as a compilable C header file. JSON output is
supported as well.
Patch #1 adds `btf` sub-command, dumping BTF types in human-readable format.
It also implements reading .BTF data from ELF file.
Patch #2 adds minimal documentation with output format examples and different
ways to specify source of BTF data.
Patch #3 adds support for btf command in bash-completion/bpftool script.
Patch #4 fixes minor indentation issue in bash-completion script.
Output format is mostly following existing format of BPF verifier log, but
deviates from it in few places. More details are in commit message for patch
#1.
Example of output for all supported BTF kinds are in patch #2 as part of
documentation. Some field names are quite verbose and I'd rather shorten them,
if we don't feel like being very close to BPF verifier names is a necessity,
but in this patch I left them exactly the same as in verifier log.
v2->v3:
- make map's key|value|kv|all suggestion more precise (Quentin)
- fix default case indentations (Quentin)
v1->v2:
- fix unnecessary trailing whitespaces in bpftool-btf.rst (Yonghong)
- add btf in main.c for a list of possible OBJECTs
- handle unknown keyword under `bpftool btf dump` (Yonghong)
Andrii Nakryiko (4):
bpftool: add ability to dump BTF types
bpftool/docs: add btf sub-command documentation
bpftool: add bash completions for btf command
bpftool: fix indendation in bash-completion/bpftool
.../bpf/bpftool/Documentation/bpftool-btf.rst | 205 +++++++
.../bpftool/Documentation/bpftool-cgroup.rst | 3 +-
.../bpftool/Documentation/bpftool-feature.rst | 3 +-
.../bpf/bpftool/Documentation/bpftool-map.rst | 3 +-
.../bpf/bpftool/Documentation/bpftool-net.rst | 3 +-
.../bpftool/Documentation/bpftool-perf.rst | 3 +-
.../bpftool/Documentation/bpftool-prog.rst | 3 +-
tools/bpf/bpftool/Documentation/bpftool.rst | 3 +-
tools/bpf/bpftool/bash-completion/bpftool | 68 +-
tools/bpf/bpftool/btf.c | 580 ++++++++++++++++++
tools/bpf/bpftool/main.c | 3 +-
tools/bpf/bpftool/main.h | 1 +
12 files changed, 859 insertions(+), 19 deletions(-)
create mode 100644 tools/bpf/bpftool/Documentation/bpftool-btf.rst
create mode 100644 tools/bpf/bpftool/btf.c
Hi Andrii,
I got all your patches this time, but I think this is because you CC-ed
me (thanks!), I cannot see them in patchwork or in the archives of the
mailing lists (not even the cover letter this time, it seems). I don't
know what can be the cause of it :(.
Other than this, I have a few nitpicks on the first two patches, I'm
sending them separately.
Best regards,
Quentin