All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/7] bpf: btf: fix struct/union/fwd types with kind_flag
@ 2018-12-12  0:46 Yonghong Song
  2018-12-12  0:46 ` [PATCH bpf-next 1/7] bpf: btf: refactor btf_int_bits_seq_show() Yonghong Song
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Yonghong Song @ 2018-12-12  0:46 UTC (permalink / raw)
  To: netdev; +Cc: Alexei Starovoitov, Daniel Borkmann, kernel-team,
	Martin KaFai Lau

Commit 69b693f0aefa ("bpf: btf: Introduce BPF Type Format (BTF)")
introduced BTF, a debug info format for BTF.

The original design has a couple of issues though.
First, the bitfield size is only encoded in int type.
If the struct member bitfield type is enum, pahole ([1])
or llvm is forced to replace enum with int type. As a result, the original
type information gets lost.

Second, the original BTF design does not envision the possibility of
BTF=>header_file conversion ([2]), hence does not encode "struct" or
"union" info for a forward type. Such information is necessary to
convert BTF to a header file.

This patch set fixed the issue by introducing kind_flag, using one bit
in type->info. When kind_flag, the struct/union btf_member->offset
will encode both bitfield_size and bit_offset, covering both
int and enum base types. The kind_flag is also used to indicate whether
the forward type is a union (when set) or a struct.

Please see each individual patches for details.

[1] https://git.kernel.org/pub/scm/devel/pahole/pahole.git/commit/?id=b18354f64cc215368c3bc0df4a7e5341c55c378c
[2] https://lwn.net/SubscriberLink/773198/fe3074838f5c3f26/

Yonghong Song (7):
  bpf: btf: refactor btf_int_bits_seq_show()
  bpf: btf: fix struct/union/fwd types with kind_flag
  tools/bpf: sync btf.h header from kernel to tools
  tools/bpf: add test_btf unit tests for kind_flag
  tools/bpf: test kernel bpffs map pretty print with struct kind_flag
  tools: bpftool: refactor btf_dumper_int_bits()
  tools: bpftool: support pretty print with kind_flag set

 include/uapi/linux/btf.h               |  15 +-
 kernel/bpf/btf.c                       | 266 +++++++++--
 tools/bpf/bpftool/btf_dumper.c         |  58 ++-
 tools/include/uapi/linux/btf.h         |  15 +-
 tools/testing/selftests/bpf/test_btf.c | 593 ++++++++++++++++++++++++-
 5 files changed, 881 insertions(+), 66 deletions(-)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-12-12  0:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-12  0:46 [PATCH bpf-next 0/7] bpf: btf: fix struct/union/fwd types with kind_flag Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 1/7] bpf: btf: refactor btf_int_bits_seq_show() Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 2/7] bpf: btf: fix struct/union/fwd types with kind_flag Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 3/7] tools/bpf: sync btf.h header from kernel to tools Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 4/7] tools/bpf: add test_btf unit tests for kind_flag Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 5/7] tools/bpf: test kernel bpffs map pretty print with struct kind_flag Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 6/7] tools: bpftool: refactor btf_dumper_int_bits() Yonghong Song
2018-12-12  0:46 ` [PATCH bpf-next 7/7] tools: bpftool: support pretty print with kind_flag set Yonghong Song

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.