Message ID | 20221108153135.491383-1-eddyz87@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | libbpf: btf_decl_tag attribute for btf dump in C format | expand |
On Tue, Nov 8, 2022 at 7:32 AM Eduard Zingerman <eddyz87@gmail.com> wrote: > > Support for clang's __attribute__((btf_decl_tag("..."))) by > btf_dump__dump_type and btf_dump__dump_type_data functions. > Decl tag attributes are restored for: > - structs and unions > - struct and union fields > - typedefs > - global variables > - function prototype parameters > > The attribute is restored using __btf_decl_tag macro that is printed > upon first call to btf_dump__dump_type function: > > #if __has_attribute(btf_decl_tag) > #define __btf_decl_tag(x) __attribute__((btf_decl_tag(x))) > #else > #define __btf_decl_tag(x) > #endif > > To simplify testing of the btf_dump__dump_type_data the > prog_tests/btf_dump.c:test_btf_dump_case is extended to invoke > btf_dump__dump_type_data for each DATASEC object in the test case > binary file. > > Changelog: > v1 -> v2: > - prog_tests/btf_dump.c:test_btf_dump_case modified to print DATASECs > using btf_dump__dump_type_data; > - support for decl tags applied to global variables and function > prototype parameters; > - update to support interleaved calls to btf_dump__dump_type and > btf__add_decl_tag (incremental dump); > - fix for potential double free error in btf_dump_assign_decl_tags; > - styling fixes suggested by Andrii. > > RFC -> v1: > - support for decl tags applied to struct / union fields and typedefs; > - __btf_decl_tag macro; > - btf_dump->decl_tags hash and equal functions updated to use integer > key instead of a pointer; > - realloc_decl_tags function removed; > - update for allocation logic in btf_dump_assign_decl_tags. > > [v1] https://lore.kernel.org/bpf/20221103134522.2764601-1-eddyz87@gmail.com/ > [RFC] https://lore.kernel.org/bpf/20221025222802.2295103-4-eddyz87@gmail.com/ > > Eduard Zingerman (3): > libbpf: __attribute__((btf_decl_tag("..."))) for btf dump in C format > selftests/bpf: Dump data sections as part of btf_dump_test_case tests > selftests/bpf: Tests for BTF_KIND_DECL_TAG dump in C format > > tools/lib/bpf/btf_dump.c | 186 +++++++++++++++- > .../selftests/bpf/prog_tests/btf_dump.c | 198 ++++++++++++++++-- > .../bpf/progs/btf_dump_test_case_decl_tag.c | 65 ++++++ > 3 files changed, 427 insertions(+), 22 deletions(-) > create mode 100644 tools/testing/selftests/bpf/progs/btf_dump_test_case_decl_tag.c > > -- > 2.34.1 > with your other patch set applied this doesn't apply cleanly anymore, please rebase and resubmit