[PATCHES v3 0/7] Initial support for some Rust tags, DW_TAG_imported_unit
Arnaldo Carvalho de Melo <[email protected]> Mon, 22 Jun 2026 17:24:23 -0300
| Newsgroups | org.kernel.vger.dwarves |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Here is a series with some initial support for some Rust DWARF
tags and support for DW_TAG_imported_unit in the same file, which makes
pahole support lots more modern userspace DWARF files, including DWARF
for Rust object files.
This makes one of the regression tests to pass again as perf now
has some rust source files and thus Rust CUs in a perf binary built with
DWARF, which is used to test pahole's pretty printing features, where it
uses the DWARF in a perf binary to decode perf.data records.
The --features=force_cu_merging, now is not strictly needed, but
remains as it may be useful at some point.
There is more work to be done to support references to a
separate file, that should come next.
- Arnaldo
Arnaldo Carvalho de Melo (16):
dwarf_loader: Initial support for DW_TAG_variant_part
dwarf_loader: Allow forcing the merge of CUs for solving inter CU tag references
dwarf_loader: Initial support for DW_TAG_subprogram in DW_TAG_enumeration
encoders: Fix diagnostic messages for unexpected tags in enumerations
dwarves_fprintf: Accumulate function__fprintf return value in enumeration printing
dwarves: Use tag__delete for enumeration children
btf_encoder: Fix types__match parameter comparison in BTF_KIND_FUNC_PROTO
encoders: Handle DW_TAG_subprogram in enumerations during BTF/CTF encoding
dwarf_loader: Populate DW_TAG_variant children in DW_TAG_variant_part
btf_encoder: Encode variant parts as union members in BTF
dwarf_loader: Handle DW_FORM_block in attr_numeric for Rust discriminant values
dwarf_loader: Support DW_TAG_imported_unit for same-file partial units
dwarf_loader: Fix cus__merging_cu failing to detect DW_FORM_ref_addr
tests: Add inter-CU type reference comparison test
tests: Guard cleanup() against empty outdir to prevent rm /*
tests: Source test_lib.sh via dirname so tests run from any directory
btf_encoder.c | 68 ++++++--
ctf_encoder.c | 23 ++-
dwarf_loader.c | 311 ++++++++++++++++++++++++++++++----
dwarves.c | 77 ++++++++-
dwarves.h | 43 ++++-
dwarves_emit.c | 10 +-
dwarves_fprintf.c | 54 ++++--
man-pages/pahole.1 | 17 +-
pahole.c | 20 ++-
tests/btf_functions.sh | 2 +-
tests/btf_type_tag_order.sh | 2 +-
tests/default_vmlinux_btf.sh | 2 +-
tests/flexible_arrays.sh | 2 +-
tests/gcc_true_signatures.sh | 2 +-
tests/inter_cu_refs.sh | 50 ++++++
tests/pfunct-btf-decl-tags.sh | 2 +-
tests/prettify_perf.data.sh | 6 +-
tests/reproducible_build.sh | 2 +-
tests/test_lib.sh | 6 +-
19 files changed, 604 insertions(+), 95 deletions(-)
create mode 100755 tests/inter_cu_refs.sh
--
2.54.0