linux/tools/bpf/bpftool
Yonghong Song 58a53978fd bpftool: Add btf enum64 support
Add BTF_KIND_ENUM64 support.
For example, the following enum is defined in uapi bpf.h.
  $ cat core.c
  enum A {
        BPF_F_INDEX_MASK                = 0xffffffffULL,
        BPF_F_CURRENT_CPU               = BPF_F_INDEX_MASK,
        BPF_F_CTXLEN_MASK               = (0xfffffULL << 32),
  } g;
Compiled with
  clang -target bpf -O2 -g -c core.c
Using bpftool to dump types and generate format C file:
  $ bpftool btf dump file core.o
  ...
  [1] ENUM64 'A' encoding=UNSIGNED size=8 vlen=3
        'BPF_F_INDEX_MASK' val=4294967295ULL
        'BPF_F_CURRENT_CPU' val=4294967295ULL
        'BPF_F_CTXLEN_MASK' val=4503595332403200ULL
  $ bpftool btf dump file core.o format c
  ...
  enum A {
        BPF_F_INDEX_MASK = 4294967295ULL,
        BPF_F_CURRENT_CPU = 4294967295ULL,
        BPF_F_CTXLEN_MASK = 4503595332403200ULL,
  };
  ...

Note that for raw btf output, the encoding (UNSIGNED or SIGNED)
is printed out as well. The 64bit value is also represented properly
in BTF and C dump.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20220607062652.3722649-1-yhs@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2022-06-07 10:20:43 -07:00
..
bash-completion bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
Documentation bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
skeleton bpftool: Add bpf_cookie to link output 2022-03-15 15:07:27 -07:00
.gitignore bpftool: Fix SPDX tag for Makefiles and .gitignore 2021-11-10 09:00:52 -08:00
btf_dumper.c bpftool: Add btf enum64 support 2022-06-07 10:20:43 -07:00
btf.c bpftool: Add btf enum64 support 2022-06-07 10:20:43 -07:00
cfg.c tools, bpftool: Poison and replace kernel integer typedefs 2020-05-11 21:20:46 +02:00
cfg.h tools: bpftool: replace Netronome boilerplate with SPDX license headers 2018-12-13 12:08:44 +01:00
cgroup.c bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
common.c bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
feature.c bpftool: Use libbpf_bpf_map_type_str 2022-06-02 16:26:24 -07:00
gen.c bpftool: Add btf enum64 support 2022-06-07 10:20:43 -07:00
iter.c bpftool: Use libbpf_get_error() to check error 2021-11-14 18:38:13 -08:00
jit_disasm.c bpftool: Properly close va_list 'ap' by va_end() on error 2021-07-06 09:19:23 +02:00
json_writer.c bpftool: Support dumping metadata 2020-09-15 18:28:27 -07:00
json_writer.h bpftool: Support dumping metadata 2020-09-15 18:28:27 -07:00
link.c bpftool: Use libbpf_bpf_link_type_str 2022-06-02 16:26:38 -07:00
main.c bpftool: Use libbpf 1.0 API mode instead of RLIMIT_MEMLOCK 2022-04-10 20:17:16 -07:00
main.h bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
Makefile Kbuild updates for v5.18 2022-03-31 11:59:03 -07:00
map_perf_ring.c bpftool: Update btf_dump__new() and perf_buffer__new_raw() calls 2021-11-11 16:54:06 -08:00
map.c bpftool: Use libbpf_bpf_map_type_str 2022-06-02 16:26:24 -07:00
net.c bpftool: use new API for attaching XDP program 2022-01-20 21:22:02 -08:00
netlink_dumper.c bpftool: Use consistent include paths for libbpf 2020-01-20 16:37:45 -08:00
netlink_dumper.h tools: bpftool: dual license all files 2018-12-13 12:08:44 +01:00
perf.c bpftool, musl compat: Replace nftw with FTW_ACTIONRETVAL 2022-04-25 23:24:16 +02:00
pids.c bpftool: Use libbpf 1.0 API mode instead of RLIMIT_MEMLOCK 2022-04-10 20:17:16 -07:00
prog.c bpftool: Use libbpf_bpf_attach_type_str 2022-06-02 16:26:30 -07:00
struct_ops.c bpftool: Use libbpf 1.0 API mode instead of RLIMIT_MEMLOCK 2022-04-10 20:17:16 -07:00
tracelog.c bpftool, musl compat: Replace sys/fcntl.h by fcntl.h 2022-04-25 23:24:28 +02:00
xlated_dumper.c bpftool: Remove usage of reallocarray() 2022-02-23 13:55:01 -08:00
xlated_dumper.h tools: bpftool: replace Netronome boilerplate with SPDX license headers 2018-12-13 12:08:44 +01:00