mbox series

[v4,bpf-next,0/4] add btf dumping to bpftool

Message ID 20190425223011.284686-1-andriin@fb.com
Headers show
Series add btf dumping to bpftool | expand

Message

Andrii Nakryiko April 25, 2019, 10:30 p.m. UTC
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.

v3->v4:
  - reverse Christmas tree (Quentin)
  - better docs (Quentin)

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 | 222 +++++++
 .../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                       | 586 ++++++++++++++++++
 tools/bpf/bpftool/main.c                      |   3 +-
 tools/bpf/bpftool/main.h                      |   1 +
 12 files changed, 882 insertions(+), 19 deletions(-)
 create mode 100644 tools/bpf/bpftool/Documentation/bpftool-btf.rst
 create mode 100644 tools/bpf/bpftool/btf.c

Comments

Alexei Starovoitov April 26, 2019, 4:48 a.m. UTC | #1
On Thu, Apr 25, 2019 at 4:08 PM Andrii Nakryiko <andriin@fb.com> wrote:
>
> 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.
>
> v3->v4:
>   - reverse Christmas tree (Quentin)
>   - better docs (Quentin)
>
> 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)

Applied. Thanks!