From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Alan Maguire <alan.maguire@oracle.com>
Cc: Jiri Olsa <jolsa@kernel.org>,
Clark Williams <williams@redhat.com>,
dwarves@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
bpf@vger.kernel.org, Yonghong Song <yonghong.song@linux.dev>,
Andrii Nakryiko <andrii@kernel.org>
Subject: Re: RFT: coverage analysis and lots more regression tests in the 'next' branch. Was: Re: [PATCH v2 0/9] pahole: Support cross-CU type references and dwz alternate debug files
Date: Sun, 30 Aug 2026 21:48:15 -0300 [thread overview]
Message-ID: <apTPTyp31CUiX9Lf@x2> (raw)
In-Reply-To: <apTIZoZoxj_gGx_e@x2>
On Sun, Aug 30, 2026 at 09:18:50PM -0300, Arnaldo Carvalho de Melo wrote:
> On Sun, Aug 30, 2026 at 06:08:49PM +0100, Alan Maguire wrote:
> > On 29/08/2026 21:21, Arnaldo Carvalho de Melo wrote:
> > > Got all of the coverage analysis and new regression tests on the next
> > > branch, and run the 'build-and-test.sh' script on my set of containers,
> > > where all the test ran on:
>
> > This looks fantastic! I ran it thru CI:
>
> Yeah, lots of tests, some simple, some more involved, and several
> scripts to help in development, like the one for test build after a
> range of patches :-)
>
> > https://github.com/alan-maguire/dwarves/actions/runs/33255515875
>
> > Let's get the coverage report enabled as part of CI too..
>
> Right, taking a look at it before after patches seems like a good way to
> notice the need for further tests to cover new code or further test
> existing one.
And BTW, here is an example of the output of coverage analysis, after
installing the the llvm-profdata package (on Fedora), starting from the
most compact part, that is the coverage table, and after it what is
needed first to then generate the table:
⬢ [acme@toolbx pahole]$ make -C build coverage-table
make: Entering directory '/home/acme/git/pahole/build'
[100%] Display ASCII coverage table from existing profdata
┌──────────────────────┬───────┬──────┬──────┬─────────────────────────────┬─────────┬─────────┐
│ File │ Lines │ Hit │ Miss │ Line Coverage │ Funcs │ FuncCov │
├──────────────────────┼───────┼──────┼──────┼─────────────────────────────┼─────────┼─────────┤
│ prefcnt.c │ 99 │ 89 │ 10 │ █████████████████░░░ 89.9% │ 11/11 │ 100.00% │
│ btf_loader.c │ 553 │ 470 │ 83 │ ████████████████░░░░ 85.0% │ 36/37 │ 97.30% │
│ pfunct.c │ 474 │ 391 │ 83 │ ████████████████░░░░ 82.5% │ 28/29 │ 96.55% │
│ pglobal.c │ 193 │ 159 │ 34 │ ████████████████░░░░ 82.4% │ 17/18 │ 94.44% │
│ pdwtags.c │ 101 │ 83 │ 18 │ ████████████████░░░░ 82.2% │ 5/5 │ 100.00% │
│ codiff.c │ 580 │ 472 │ 108 │ ████████████████░░░░ 81.4% │ 20/20 │ 100.00% │
│ dtagnames.c │ 30 │ 24 │ 6 │ ████████████████░░░░ 80.0% │ 4/4 │ 100.00% │
│ dutil.c │ 210 │ 152 │ 58 │ ██████████████░░░░░░ 72.4% │ 13/15 │ 86.67% │
│ dwarves_fprintf.c │ 1598 │ 1154 │ 444 │ ██████████████░░░░░░ 72.2% │ 40/47 │ 85.11% │
│ dwarves_emit.c │ 326 │ 231 │ 95 │ ██████████████░░░░░░ 70.9% │ 15/18 │ 83.33% │
│ gobuffer.c │ 40 │ 27 │ 13 │ █████████████░░░░░░░ 67.5% │ 3/5 │ 60.00% │
│ dwarf_loader.c │ 3376 │ 2214 │ 1162 │ █████████████░░░░░░░ 65.6% │ 146/178 │ 82.02% │
│ btf_encoder.c │ 2188 │ 1401 │ 787 │ ████████████░░░░░░░░ 64.0% │ 72/83 │ 86.75% │
│ dwarves.c │ 1872 │ 1118 │ 754 │ ███████████░░░░░░░░░ 59.7% │ 118/161 │ 73.29% │
│ dwarves_reorganize.c │ 275 │ 162 │ 113 │ ███████████░░░░░░░░░ 58.9% │ 6/8 │ 75.00% │
│ pahole.c │ 2132 │ 1083 │ 1049 │ ██████████░░░░░░░░░░ 50.8% │ 60/90 │ 66.67% │
│ elf_symtab.c │ 55 │ 27 │ 28 │ █████████░░░░░░░░░░░ 49.1% │ 2/2 │ 100.00% │
│ rbtree.c │ 286 │ 137 │ 149 │ █████████░░░░░░░░░░░ 47.9% │ 7/10 │ 70.00% │
│ libctf.c │ 353 │ 28 │ 325 │ █░░░░░░░░░░░░░░░░░░░ 7.9% │ 1/29 │ 3.45% │
│ ctf_loader.c │ 502 │ 5 │ 497 │ ░░░░░░░░░░░░░░░░░░░░ 1.0% │ 1/29 │ 3.45% │
│ ctracer.c │ 521 │ 0 │ 521 │ ░░░░░░░░░░░░░░░░░░░░ 0.0% │ 0/31 │ 0.00% │
│ elfcreator.c │ 201 │ 0 │ 201 │ ░░░░░░░░░░░░░░░░░░░░ 0.0% │ 0/12 │ 0.00% │
│ scncopy.c │ 12 │ 0 │ 12 │ ░░░░░░░░░░░░░░░░░░░░ 0.0% │ 0/1 │ 0.00% │
│ syscse.c │ 83 │ 0 │ 83 │ ░░░░░░░░░░░░░░░░░░░░ 0.0% │ 0/6 │ 0.00% │
├──────────────────────┼───────┼──────┼──────┼─────────────────────────────┼─────────┼─────────┤
│ TOTAL │ 16060 │ 9427 │ 6633 │ ███████████░░░░░░░░░ 58.7% │ 605/849 │ 71.3% │
└──────────────────────┴───────┴──────┴──────┴─────────────────────────────┴─────────┴─────────┘
[100%] Built target coverage-table
make: Leaving directory '/home/acme/git/pahole/build'
⬢ [acme@toolbx pahole]$
⬢ [acme@toolbx pahole]$ make -C build list-targets
make: Entering directory '/home/acme/git/pahole/build'
pahole build targets:
make - Build all binaries and libraries
make install - Install to CMAKE_INSTALL_PREFIX
Testing:
make check - Run the test suite
Coverage:
make coverage - Full coverage: rebuild, run tests, report diff
make coverage-report - Regenerate report from existing profdata
make coverage-table - Display ASCII coverage table
Coverage uses build-coverage/ as the instrumented build directory.
Set BUILD_DIR to override.
Tarball generation:
make tarxz-pkg - Create .tar.xz release tarball
make targz-pkg - Create .tar.gz release tarball
make tarbz2-pkg - Create .tar.bz2 release tarball
make tar-pkg - Create .tar release tarball
Tarballs created in current directory by default. Set TARBALL_DIR to override.
See README.tarball for details.
Built target list-targets
make: Leaving directory '/home/acme/git/pahole/build'
⬢ [acme@toolbx pahole]$ make -C build coverage
make: Entering directory '/home/acme/git/pahole/build'
[100%] Full coverage: rebuild with instrumentation, run tests, report
=== Step 1: Rebuilding with coverage instrumentation ===
[100%] Built target pahole
=== Step 2: Running tests with coverage ===
73: Typedef chain display. : Ok
Saved timing data to .test-times (73 tests)
=== Merging 1025 profile files ===
=== Step 3: Generating coverage report ===
File Previous Current Delta
-------------------------- -------- -------- ---------
btf_encoder.c 0.00% 64.03% +64.03%
btf_loader.c 0.00% 84.99% +84.99%
codiff.c 0.00% 81.38% +81.38%
ctf_loader.c 0.00% 1.00% +1.00%
ctracer.c 0.00% 0.00% +0.00%
dtagnames.c 0.00% 80.00% +80.00%
dutil.c 0.00% 72.38% +72.38%
dutil.h 0.00% 10.00% +10.00%
dwarf_loader.c 0.00% 65.58% +65.58%
dwarves.c 0.21% 59.72% +59.51%
dwarves.h 0.00% 81.54% +81.54%
dwarves_emit.c 0.00% 70.86% +70.86%
dwarves_fprintf.c 0.00% 72.22% +72.22%
dwarves_reorganize.c 0.00% 58.91% +58.91%
elf_symtab.c 0.00% 49.09% +49.09%
elf_symtab.h 0.00% 55.81% +55.81%
elfcreator.c 0.00% 0.00% +0.00%
gobuffer.c 0.00% 67.50% +67.50%
gobuffer.h 0.00% 33.33% +33.33%
hash.h 0.00% 100.00% +100.00%
libctf.c 0.00% 7.93% +7.93%
list.h 0.00% 32.58% +32.58%
pahole.c 1.45% 50.80% +49.35%
pdwtags.c 0.00% 82.18% +82.18%
pfunct.c 0.00% 82.49% +82.49%
pglobal.c 0.00% 82.38% +82.38%
prefcnt.c 0.00% 89.90% +89.90%
rbtree.c 0.00% 47.90% +47.90%
rbtree.h 0.00% 66.67% +66.67%
scncopy.c 0.00% 0.00% +0.00%
syscse.c 0.00% 0.00% +0.00%
=== All .c files by coverage (ascending) ===
File Lines % Missed
-------------------------- -------- ------
ctracer.c 0.00% 521
elfcreator.c 0.00% 201
scncopy.c 0.00% 12
syscse.c 0.00% 83
ctf_loader.c 1.00% 497
libctf.c 7.93% 325
rbtree.c 47.90% 149
elf_symtab.c 49.09% 28
pahole.c 50.80% 1049
dwarves_reorganize.c 58.91% 113
dwarves.c 59.72% 754
btf_encoder.c 64.03% 787
dwarf_loader.c 65.58% 1162
gobuffer.c 67.50% 13
dwarves_emit.c 70.86% 95
dwarves_fprintf.c 72.22% 444
dutil.c 72.38% 58
dtagnames.c 80.00% 6
codiff.c 81.38% 108
pdwtags.c 82.18% 18
pglobal.c 82.38% 34
pfunct.c 82.49% 83
btf_loader.c 84.99% 83
prefcnt.c 89.90% 10
Baseline updated: /home/acme/git/pahole/coverage-report.txt
Previous baseline saved: /home/acme/git/pahole/coverage-report.txt.prev
=== Generating HTML report ===
HTML report: /home/acme/git/pahole/build-coverage/coverage/html/index.html
Done.
[100%] Built target coverage
make: Leaving directory '/home/acme/git/pahole/build'
⬢ [acme@toolbx pahole]$
prev parent reply other threads:[~2026-08-31 0:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 21:34 [PATCH v2 0/9] pahole: Support cross-CU type references and dwz alternate debug files Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 1/9] dwarf_loader: Initial support for DW_TAG_variant_part Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 2/9] dwarf_loader: Initial support for DW_TAG_subprogram in DW_TAG_enumeration Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 3/9] dwarf_loader: Allow forcing the merge of CUs for solving inter CU tag references Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 4/9] dwarf_loader: Support DW_TAG_imported_unit for same-file partial units Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 5/9] dwarf_loader: Fix cus__merging_cu failing to detect DW_FORM_ref_addr Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 6/9] tests: Add inter-CU type reference comparison test Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 7/9] dwarf_loader: Add cu parameter to tag__set_spec() and dwarf_tag__set_attr_type() Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 8/9] dwarf_loader: Support DW_FORM_GNU_ref_alt references to dwz alternate debug files Arnaldo Carvalho de Melo
2026-08-21 21:35 ` [PATCH v2 9/9] scripts: Add vmlinux_comparison.py for DWARF/BTF analysis Arnaldo Carvalho de Melo
2026-08-26 0:52 ` [PATCH v2 0/9] pahole: Support cross-CU type references and dwz alternate debug files Arnaldo Carvalho de Melo
2026-08-26 11:43 ` Alan Maguire
2026-08-26 13:10 ` Arnaldo Carvalho de Melo
2026-08-28 14:05 ` Alan Maguire
2026-08-28 22:59 ` Arnaldo Carvalho de Melo
2026-08-29 20:21 ` RFT: coverage analysis and lots more regression tests in the 'next' branch. Was: " Arnaldo Carvalho de Melo
2026-08-30 17:08 ` Alan Maguire
2026-08-31 0:18 ` Arnaldo Carvalho de Melo
2026-08-31 0:48 ` Arnaldo Carvalho de Melo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=apTPTyp31CUiX9Lf@x2 \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=jolsa@kernel.org \
--cc=williams@redhat.com \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.