Message ID | 20221001104425.415768-1-eddyz87@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 44a726c3f23cf762ef4ce3c1709aefbcbe97f62c |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next,v2,1/2] bpftool: Print newline before '}' for struct with padding only fields | expand |
Hello: This series was applied to bpf/bpf-next.git (master) by Andrii Nakryiko <andrii@kernel.org>: On Sat, 1 Oct 2022 13:44:24 +0300 you wrote: > btf_dump_emit_struct_def attempts to print empty structures at a > single line, e.g. `struct empty {}`. However, it has to account for a > case when there are no regular but some padding fields in the struct. > In such case `vlen` would be zero, but size would be non-zero. > > E.g. here is struct bpf_timer from vmlinux.h before this patch: > > [...] Here is the summary with links: - [bpf-next,v2,1/2] bpftool: Print newline before '}' for struct with padding only fields https://git.kernel.org/bpf/bpf-next/c/44a726c3f23c - [bpf-next,v2,2/2] selftests/bpf: Test btf dump for struct with padding only fields https://git.kernel.org/bpf/bpf-next/c/d503f1176b14 You are awesome, thank you!
diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c index 4221f73a74d0..e4da6de68d8f 100644 --- a/tools/lib/bpf/btf_dump.c +++ b/tools/lib/bpf/btf_dump.c @@ -944,7 +944,11 @@ static void btf_dump_emit_struct_def(struct btf_dump *d, lvl + 1); } - if (vlen) + /* + * Keep `struct empty {}` on a single line, + * only print newline when there are regular or padding fields. + */ + if (vlen || t->size) btf_dump_printf(d, "\n"); btf_dump_printf(d, "%s}", pfx(lvl)); if (packed)
btf_dump_emit_struct_def attempts to print empty structures at a single line, e.g. `struct empty {}`. However, it has to account for a case when there are no regular but some padding fields in the struct. In such case `vlen` would be zero, but size would be non-zero. E.g. here is struct bpf_timer from vmlinux.h before this patch: struct bpf_timer { long: 64; long: 64;}; And after this patch: struct bpf_dynptr { long: 64; long: 64; }; Signed-off-by: Eduard Zingerman <eddyz87@gmail.com> --- tools/lib/bpf/btf_dump.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)