BPF List
 help / color / mirror / Atom feed
* Re: [PATCH v2 0/9] pahole: Support cross-CU type references and dwz alternate debug files
       [not found]       ` <0e1c3820-c16b-4266-bde4-655b760b3db4@oracle.com>
@ 2026-08-28 22:59         ` Arnaldo Carvalho de Melo
       [not found]           ` <apM_W9ld8Bj3q5Vk@x2>
  0 siblings, 1 reply; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-08-28 22:59 UTC (permalink / raw)
  To: Alan Maguire
  Cc: Jiri Olsa, Clark Williams, dwarves, Arnaldo Carvalho de Melo, bpf,
	Yonghong Song, Andrii Nakryiko

On Fri, Aug 28, 2026 at 03:05:02PM +0100, Alan Maguire wrote:
> On 26/08/2026 14:10, Arnaldo Carvalho de Melo wrote:
> > On Wed, Aug 26, 2026 at 12:43:09PM +0100, Alan Maguire wrote:
> >> I tried a few other approaches where we handle inter-cu references, but all seemed
> >> like they were a bit too complex or involved multiple traversals of the CU set and
> >> were too expensive time-wise.

> >> I can land these if you'd prefer, whatever works. Thanks!

> > Please do it, I think its better so that we try to have multiple people
> > involved in landing features that touch the code code like in this case.

> > I'll then land the testing infra that doesn't touch the code code and is
> > less risky.
 
> series applied, thanks!

Thanks a lot!

I'm now in the process of cherry picking non-Rust related patches,
things that don't touch the .c files in the tree, just adding coverage
analysis, tons of tests and scripts for helping us do bisection tests,
etc.

I just pushed out the first batch to the next branch, I invite people to
try it and report results, it should help us to catch problems sooner by
testing most of the paths in the codebase, which is super important
these days where we are having (or will have) tons of patches being
submitted.

Tests 10-15 are different, just have the same description, this is a
preexisting problem that I think I have a fix but didn't cherry pick it
yet, there are lots more tests to cherry pick before I turn my attention
back to the rust work:

⬢ [acme@toolbx pahole]$ rm -rf build
⬢ [acme@toolbx pahole]$ ./build-and-test-cmd.sh
-- The C compiler identification is GNU 16.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Setting BUILD_SHARED_LIBS = ON
-- Checking availability of DWARF and ELF development libraries
-- Looking for dwfl_module_build_id in elf
-- Looking for dwfl_module_build_id in elf - found
-- Found dwarf.h header: /usr/include
-- Found elfutils/libdw.h header: /usr/include
-- Found libdw library: /usr/lib64/libdw.so
-- Found libelf library: /usr/lib64/libelf.so
-- Checking availability of DWARF and ELF development libraries - done
-- Found ZLIB: /usr/lib64/libz.so (found version "1.3.1")
-- Checking availability of argp library
-- Assuming argp is in libc
-- Checking availability of argp library - done
-- Checking availability of obstack library
-- Assuming obstack is in libc
-- Checking availability of obstack library - done
-- Submodule update
-- Submodule update - done
-- Version: v1.31-124-g2cb95a21681fa42e
-- Performing Test HAVE_REALLOCARRAY_SUPPORT
-- Performing Test HAVE_REALLOCARRAY_SUPPORT - Success
-- Configuring done (0.6s)
-- Generating done (0.0s)
-- Build files have been written to: /home/acme/git/pahole/build
make: Entering directory '/home/acme/git/pahole/build'
[  1%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf.c.o
[  3%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf.c.o
[  5%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_iter.c.o
[  6%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/elf.c.o
[ 12%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/features.c.o
[ 12%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf_prog_linfo.c.o
[ 12%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_dump.c.o
[ 13%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/gen_loader.c.o
[ 15%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/hashmap.c.o
[ 17%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/linker.c.o
[ 18%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_relocate.c.o
[ 20%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/netlink.c.o
[ 24%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/nlattr.c.o
[ 25%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_utils.c.o
[ 25%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf.c.o
[ 27%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_probes.c.o
[ 31%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/ringbuf.c.o
[ 31%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/zip.c.o
[ 32%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/relo_core.c.o
[ 34%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/strset.c.o
[ 36%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/usdt.c.o
[ 36%] Built target bpf
[ 39%] Building C object CMakeFiles/dwarves.dir/libctf.c.o
[ 39%] Building C object CMakeFiles/dwarves.dir/dwarves_fprintf.c.o
[ 43%] Building C object CMakeFiles/dwarves.dir/ctf_loader.c.o
[ 43%] Building C object CMakeFiles/dwarves.dir/gobuffer.c.o
[ 46%] Building C object CMakeFiles/dwarves.dir/dutil.c.o
[ 46%] Building C object CMakeFiles/dwarves.dir/btf_loader.c.o
[ 48%] Building C object CMakeFiles/dwarves.dir/rbtree.c.o
[ 50%] Building C object CMakeFiles/dwarves.dir/dwarves.c.o
[ 51%] Building C object CMakeFiles/dwarves.dir/elf_symtab.c.o
[ 53%] Building C object CMakeFiles/dwarves.dir/dwarf_loader.c.o
[ 55%] Building C object CMakeFiles/dwarves.dir/btf_encoder.c.o
[ 56%] Linking C shared library libdwarves.so
[ 56%] Built target dwarves
[ 58%] Building C object CMakeFiles/dwarves_emit.dir/dwarves_emit.c.o
[ 60%] Building C object CMakeFiles/dwarves_reorganize.dir/dwarves_reorganize.c.o
[ 62%] Building C object CMakeFiles/prefcnt.dir/prefcnt.c.o
[ 63%] Building C object CMakeFiles/scncopy.dir/scncopy.c.o
[ 65%] Building C object CMakeFiles/scncopy.dir/elfcreator.c.o
[ 68%] Building C object CMakeFiles/codiff.dir/codiff.c.o
[ 68%] Building C object CMakeFiles/pglobal.dir/pglobal.c.o
[ 70%] Building C object CMakeFiles/pdwtags.dir/pdwtags.c.o
[ 72%] Building C object CMakeFiles/dtagnames.dir/dtagnames.c.o
[ 74%] Building C object CMakeFiles/syscse.dir/syscse.c.o
[ 75%] Linking C executable dtagnames
[ 77%] Linking C executable prefcnt
[ 79%] Linking C executable syscse
[ 81%] Linking C executable pdwtags
[ 82%] Linking C executable pglobal
[ 82%] Built target dtagnames
[ 84%] Linking C executable scncopy
[ 84%] Built target prefcnt
[ 84%] Built target syscse
[ 86%] Linking C shared library libdwarves_reorganize.so
[ 86%] Built target pdwtags
[ 86%] Built target pglobal
[ 87%] Linking C shared library libdwarves_emit.so
[ 87%] Built target scncopy
[ 87%] Built target dwarves_reorganize
[ 87%] Built target dwarves_emit
[ 89%] Linking C executable codiff
[ 91%] Building C object CMakeFiles/ctracer.dir/ctracer.c.o
[ 93%] Building C object CMakeFiles/pahole.dir/pahole.c.o
[ 94%] Building C object CMakeFiles/pfunct.dir/pfunct.c.o
[ 94%] Built target codiff
[ 96%] Linking C executable pfunct
[ 98%] Linking C executable ctracer
[ 98%] Built target pfunct
[ 98%] Built target ctracer
[100%] Linking C executable pahole
[100%] Built target pahole
make: Leaving directory '/home/acme/git/pahole/build'
Testing pahole version:
  v1.31-124-g2cb95a21681fa42e

Verbose mode enabled - showing diagnostic information:
  Architecture: x86_64
  CPUs: 32
  Memory: 62.7 GB
  Swap: 8.0 GB
  Parallelism: unlimited (all tests run in parallel)
    Tip: On low-memory systems, use -j to limit parallelism (e.g., -j 4 or -j 1)
  Test artifacts: /tmp/pahole-tests/
  Compiler: gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2)
  libc: ldd (GNU libc) 2.43
  bpftool: bpftool v7.6.0
  VMLINUX: not set
  PERF_BIN: not set
  PERF_SRC_DIR: not set

  1: Bitfield layout and data member filtering.                         : Ok
  2: BTF arena type tag encoding for kfuncs.                            : Ok
  3: BTF multi-dimensional array encoding and round-trip.               : Ok
  4: BTF bitfield encoding and loading round-trip.                      : Ok
  5: BTF VAR and DATASEC encoding for global variables.                 : Ok
  6: BTF_KIND_FWD encoding and loading round-trip.                      : Ok
  8: BTF FLOAT and ENUM64 type encoding.                                : Ok
  9: Check BTF type tag order.                                          : Ok
 10: Validation of BTF encoding of true_signatures.                     : Ok
 11: Validation of BTF encoding of true_signatures.                     : Ok
 12: Validation of BTF encoding of true_signatures.                     : Ok
 13: Validation of BTF encoding of true_signatures.                     : Ok
 14: Validation of BTF encoding of true_signatures.                     : Ok
 15: Validation of BTF encoding of true_signatures.                     : Ok
 16: Class name list from file.                                         : Ok
 17: codiff struct comparison.                                          : Ok
 18: Compilable output and type filtering.                              : Ok
 19: Type containment and pointer search.                               : Ok
 20: Class name filtering.                                              : Ok
 21: Default BTF on a system without BTF.                               : Ok
 22: Display format options.                                            : Ok
 23: DWZ alternate debug file type resolution.                          : Ok
 24: Atomic typedef emission.                                           : Ok
 25: Enumerator search.                                                 : Ok
 26: Expand pointers option.                                            : Ok
 27: Type expansion and anonymous struct options.                       : Ok
 29: Validation of GCC optimized parameters in default BTF.             : Ok
 30: Validation of BTF encoding of true_signatures.                     : Skip (no optimizations applied.)
 31: Compare parallel vs merged CU loading for inter-CU type references.: Ok
 32: Version output.                                                    : Ok
 33: pdwtags DWARF tag display.                                         : Ok
 34: Check that pfunct can print btf_decl_tags read from BTF.           : Ok
 35: pfunct function statistics.                                        : Ok
 37: Sizes and holes display.                                           : Ok
 38: Sort output and separator.                                         : Ok
 39: Validation of BTF encoding of functions.                           : Ok
 36: Pretty printing of files using DWARF type information.             : Ok
 28: Flexible arrays accounting.                                        : Ok
  7: Split BTF encoding (vmlinux base + kernel module).                 : Ok
 40: Parallel reproducible DWARF Loading/Serial BTF encoding.           : Ok
Saved timing data to .test-times (40 tests)

⬢ [acme@toolbx pahole]$

Cheers,

- Arnaldo

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

* 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
       [not found]           ` <apM_W9ld8Bj3q5Vk@x2>
@ 2026-08-30 17:08             ` Alan Maguire
  2026-08-31  0:18               ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 4+ messages in thread
From: Alan Maguire @ 2026-08-30 17:08 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Jiri Olsa, Clark Williams, dwarves, Arnaldo Carvalho de Melo, bpf,
	Yonghong Song, Andrii Nakryiko

On 29/08/2026 21:21, Arnaldo Carvalho de Melo wrote:
> On Fri, Aug 28, 2026 at 07:59:24PM -0300, Arnaldo Carvalho de Melo wrote:
>> I'm now in the process of cherry picking non-Rust related patches,
>> things that don't touch the .c files in the tree, just adding coverage
>> analysis, tons of tests and scripts for helping us do bisection tests,
>> etc.
>  
>> I just pushed out the first batch to the next branch, I invite people to
>> try it and report results, it should help us to catch problems sooner by
>> testing most of the paths in the codebase, which is super important
>> these days where we are having (or will have) tons of patches being
>> submitted.
> 
> 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: 

https://github.com/alan-maguire/dwarves/actions/runs/33255515875

Let's get the coverage report enabled as part of CI too..

> 
> toolsbuilder@five:~$ cat dm.log/summary
> Subject: tools build test for http://192.168.86.5/pahole/dwarves-1.31.tar.xz build-and-test-cmd.sh
> 
>    1    78.93 almalinux:8                   : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28) , clang version 21.1.8 ( 21.1.8-1.module_el8.10.0+4172+b6b13d75) flex 2.6.1
>    2   158.15 almalinux:9                   : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-2.el9) flex 2.6.4
>    3    36.95 almalinux:9-i386              : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-2.el9) flex 2.6.4
>    4   167.45 almalinux:10                  : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-1.el10.alma.1) flex 2.6.4
>    5   293.08 alpine:3.22                   : Ok   gcc (Alpine 14.2.0) 14.2.0 , Alpine clang version 20.1.8 flex 2.6.4
>    6   289.06 alpine:3.23                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 21.1.2 flex 2.6.4
>    7   255.51 alpine:3.24                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 22.1.3 flex 2.6.4
>    8   262.55 alpine:edge                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 22.1.8 flex 2.6.4
>    9   152.16 amazonlinux:2023              : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5) , clang version 15.0.7 (AWS 15.0.7-3.amzn2023.0.4) flex 2.6.4
>   10   152.38 amazonlinux:devel             : Ok   gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4) , clang version 15.0.6 (Amazon Linux 15.0.6-3.amzn2023.0.2) flex 2.6.4
>   11   171.22 archlinux:base                : Ok   gcc (GCC) 16.2.1 20260810 , clang version 22.1.8 flex 2.6.4
>   12   160.21 centos:stream                 : Ok   gcc (GCC) 14.4.1 20260724 (Red Hat 14.4.1-2) , clang version 22.1.8 (CentOS 22.1.8-1.el10) flex 2.6.4
>   13    77.34 debian:11                     : Ok   gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 13.0.1-6~deb11u1 flex 2.6.4
>   14   154.23 debian:12                     : Ok   gcc (Debian 12.2.0-14+deb12u1) 12.2.0 , Debian clang version 14.0.6 flex 2.6.4
>   15   157.32 debian:13                     : Ok   gcc (Debian 14.2.0-19) 14.2.0 , Debian clang version 19.1.7 (3+b1) flex 2.6.4
>   16   156.96 debian:experimental           : Ok   gcc (Debian 16.1.0-3) 16.1.0 , Debian clang version 21.1.8 (10) flex 2.6.4
>   17   157.12 fedora:40                     : Ok   gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3) , clang version 18.1.8 (Fedora 18.1.8-2.fc40) flex 2.6.4
>   18   158.62 fedora:41                     : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 19.1.7 (Fedora 19.1.7-5.fc41) flex 2.6.4
>   19   161.74 fedora:42                     : Ok   gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7) , clang version 20.1.8 (Fedora 20.1.8-4.fc42) flex 2.6.4
>   20   160.37 fedora:43                     : Ok   gcc (GCC) 15.3.1 20260722 (Red Hat 15.3.1-1) , clang version 21.1.8 (Fedora 21.1.8-6.fc43) flex 2.6.4
>   21   239.67 fedora:44                     : Ok   gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2) , clang version 22.1.8 (Fedora 22.1.8-4.fc44) flex 2.6.4
>   22   238.08 fedora:45                     : Ok   gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2) , clang version 22.1.8 (Fedora 22.1.8-20.fc45) flex 2.6.4
>   23   170.21 fedora:rawhide                : Ok   gcc (GCC) 16.1.1 20260703 (Red Hat 16.1.1-4) , clang version 22.1.8 (Fedora 22.1.8-20.fc45) flex 2.6.4
>   24    89.22 gentoo:stage3                 : Ok   gcc (Gentoo 15.3.0 p8) 15.3.0  flex 2.6.4
>   25   166.60 manjaro:base                  : Ok   gcc (GCC) 16.1.1 20260625 , clang version 22.1.6 flex 2.6.4
>   26   172.84 opensuse:16.0                 : Ok   gcc (SUSE Linux) 15.3.0 , clang version 19.1.7 flex 2.6.4
>   27   166.50 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 15.3.0 , clang version 22.1.8 flex 2.6.4
>   28    80.73 oraclelinux:8                 : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28.0.1) , clang version 21.1.8 ( 21.1.8-1.module+el8.10.0+90887+a5269809) flex 2.6.1
>   29   162.06 oraclelinux:9                 : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14.0.1) , clang version 21.1.8 ( 21.1.8-2.el9) flex 2.6.4
>   30   164.88 oraclelinux:10                : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4.0.1) , clang version 21.1.8 (Oracle America 21.1.8-1.el10) flex 2.6.4
>   31    82.10 rockylinux:8                  : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28) , clang version 21.1.8 (RESF 21.1.8-1.module+el8.10.0+40180+8e26bdb3) flex 2.6.1
>   32   162.01 rockylinux:9                  : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (RESF 21.1.8-2.el9) flex 2.6.4
>   33   166.23 rockylinux:10                 : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 21.1.8 (RESF 21.1.8-1.el10) flex 2.6.4
>   34   169.75 ubuntu:22.04                  : Ok   gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0 , Ubuntu clang version 14.0.0-1ubuntu1.1 flex 2.6.4
>   35   162.24 ubuntu:24.04                  : Ok   gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 , Ubuntu clang version 18.1.3 (1ubuntu1) flex 2.6.4
>   36   162.16 ubuntu:25.04                  : Ok   gcc (Ubuntu 14.2.0-19ubuntu2) 14.2.0 , Ubuntu clang version 20.1.2 (0ubuntu1) flex 2.6.4
>   37   161.96 ubuntu:25.10                  : Ok   gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0 , Ubuntu clang version 20.1.8 (0ubuntu4) flex 2.6.4
>   38   163.52 ubuntu:26.04                  : Ok   gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 , Ubuntu clang version 21.1.8 (6ubuntu1) flex 2.6.4
> BUILD_TARBALL_HEAD=eeb6956261d2fbe71715f0633a68fdc840b5f5ce
> 39 6242.1
> toolsbuilder@five:~$
> 
> For instance:
> 
> toolsbuilder@five:~$ cat dm.log/fedora\:rawhide 
> fedora:rawhide
> Downloading http://192.168.86.5/pahole/dwarves-1.31.tar.xz...
>   % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
>                                  Dload  Upload  Total   Spent   Left   Speed
> 100  2.34M 100  2.34M   0      0 530.8M      0                              0
> dwarves-1.31/config.h.cmake
> dwarves-1.31/btfdiff
> <SNIP>
> dwarves-1.31/tests/typedef_chain.sh
> dwarves-1.31/tests/.test-times.seed
> dwarves-1.31/HEAD
> BUILD_TARBALL_HEAD=eeb6956261d2fbe71715f0633a68fdc840b5f5ce
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/16/lto-wrapper
> OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
> OFFLOAD_TARGET_DEFAULT=1
> Target: x86_64-redhat-linux
> Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,cobol,algol68,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugzilla.redhat.com/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-16.1.1-build/gcc-16.1.1-20260703/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-tls=gnu2 --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 --disable-libssp
> Thread model: posix
> Supported LTO compression algorithms: zlib zstd
> gcc version 16.1.1 20260703 (Red Hat 16.1.1-4) (GCC) 
> -- The C compiler identification is GNU 16.1.1
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working C compiler: /usr/bin/cc - skipped
> -- Detecting C compile features
> -- Detecting C compile features - done
> -- Setting BUILD_SHARED_LIBS = ON
> -- Checking availability of DWARF and ELF development libraries
> -- Looking for dwfl_module_build_id in elf
> -- Looking for dwfl_module_build_id in elf - found
> -- Found dwarf.h header: /usr/include
> -- Found elfutils/libdw.h header: /usr/include
> -- Found libdw library: /usr/lib64/libdw.so
> -- Found libelf library: /usr/lib64/libelf.so
> -- Checking availability of DWARF and ELF development libraries - done
> -- Found ZLIB: /usr/lib64/libz.so (found version "1.3.1")
> -- Checking availability of argp library
> -- Assuming argp is in libc
> -- Checking availability of argp library - done
> -- Checking availability of obstack library
> -- Assuming obstack is in libc
> -- Checking availability of obstack library - done
> -- Version: v1.31-tarball-g416753b4ba90 (from HEAD file)
> -- Performing Test HAVE_REALLOCARRAY_SUPPORT
> -- Performing Test HAVE_REALLOCARRAY_SUPPORT - Success
> -- Configuring done (0.6s)
> -- Generating done (0.0s)
> -- Build files have been written to: /git/dwarves-1.31/build
> make: Entering directory '/git/dwarves-1.31/build'
> [  1%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf.c.o
> [  3%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/features.c.o
> [  5%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf.c.o
> [  8%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_relocate.c.o
> [  8%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_dump.c.o
> [ 10%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/hashmap.c.o
> [ 13%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf_prog_linfo.c.o
> [ 13%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf.c.o
> [ 15%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_probes.c.o
> [ 18%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_utils.c.o
> [ 20%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/linker.c.o
> [ 20%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_iter.c.o
> [ 22%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/elf.c.o
> [ 24%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/gen_loader.c.o
> [ 25%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/netlink.c.o
> [ 27%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/nlattr.c.o
> [ 29%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/ringbuf.c.o
> [ 31%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/relo_core.c.o
> [ 32%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/usdt.c.o
> [ 36%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/strset.c.o
> [ 36%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/zip.c.o
> [ 36%] Built target bpf
> [ 39%] Building C object CMakeFiles/dwarves.dir/dwarves.c.o
> [ 39%] Building C object CMakeFiles/dwarves.dir/dwarves_fprintf.c.o
> [ 43%] Building C object CMakeFiles/dwarves.dir/rbtree.c.o
> [ 43%] Building C object CMakeFiles/dwarves.dir/libctf.c.o
> [ 46%] Building C object CMakeFiles/dwarves.dir/ctf_loader.c.o
> [ 48%] Building C object CMakeFiles/dwarves.dir/gobuffer.c.o
> [ 51%] Building C object CMakeFiles/dwarves.dir/btf_loader.c.o
> [ 51%] Building C object CMakeFiles/dwarves.dir/elf_symtab.c.o
> [ 48%] Building C object CMakeFiles/dwarves.dir/btf_encoder.c.o
> [ 53%] Building C object CMakeFiles/dwarves.dir/dwarf_loader.c.o
> [ 55%] Building C object CMakeFiles/dwarves.dir/dutil.c.o
> [ 56%] Linking C shared library libdwarves.so
> [ 56%] Built target dwarves
> [ 60%] Building C object CMakeFiles/syscse.dir/syscse.c.o
> [ 62%] Building C object CMakeFiles/dtagnames.dir/dtagnames.c.o
> [ 65%] Building C object CMakeFiles/prefcnt.dir/prefcnt.c.o
> [ 65%] Building C object CMakeFiles/dwarves_emit.dir/dwarves_emit.c.o
> [ 72%] Building C object CMakeFiles/scncopy.dir/scncopy.c.o
> [ 68%] Building C object CMakeFiles/pglobal.dir/pglobal.c.o
> [ 62%] Building C object CMakeFiles/pdwtags.dir/pdwtags.c.o
> [ 72%] Building C object CMakeFiles/dwarves_reorganize.dir/dwarves_reorganize.c.o
> [ 68%] Building C object CMakeFiles/codiff.dir/codiff.c.o
> [ 74%] Building C object CMakeFiles/scncopy.dir/elfcreator.c.o
> [ 75%] Linking C executable dtagnames
> [ 79%] Linking C executable pdwtags
> [ 81%] Linking C executable syscse
> [ 81%] Linking C executable prefcnt
> [ 82%] Linking C executable pglobal
> [ 84%] Linking C executable scncopy
> [ 86%] Linking C shared library libdwarves_reorganize.so
> [ 86%] Built target dtagnames
> [ 86%] Built target pdwtags
> [ 86%] Built target pglobal
> [ 86%] Built target prefcnt
> [ 86%] Built target syscse
> [ 87%] Linking C shared library libdwarves_emit.so
> [ 87%] Built target scncopy
> [ 87%] Built target dwarves_reorganize
> [ 87%] Built target dwarves_emit
> [ 89%] Linking C executable codiff
> [ 91%] Building C object CMakeFiles/pahole.dir/pahole.c.o
> [ 93%] Building C object CMakeFiles/ctracer.dir/ctracer.c.o
> [ 94%] Building C object CMakeFiles/pfunct.dir/pfunct.c.o
> [ 94%] Built target codiff
> [ 98%] Linking C executable ctracer
> [ 98%] Linking C executable pfunct
> [ 98%] Built target pfunct
> [ 98%] Built target ctracer
> [100%] Linking C executable pahole
> [100%] Built target pahole
> make: Leaving directory '/git/dwarves-1.31/build'
> Testing pahole version:
>   v1.31-tarball-g416753b4ba90
> 
> Verbose mode enabled - showing diagnostic information:
>   Architecture: x86_64
>   CPUs: 32
>   Memory: 62.7 GB
>   Swap: 8.0 GB
>   Parallelism: unlimited (all tests run in parallel)
>     Tip: On low-memory systems, use -j to limit parallelism (e.g., -j 4 or -j 1)
>   Test artifacts: /tmp/pahole-tests/
>   Compiler: gcc (GCC) 16.1.1 20260703 (Red Hat 16.1.1-4)
>   libc: ldd (GNU libc) 2.44
>   bpftool: bpftool v7.7.0
>   VMLINUX: /tmp/vmlinux
>   PERF_BIN: not set
>   PERF_SRC_DIR: not set
> 
>   1: dwarves_emit.c: _Atomic type compile emission.                     : Ok
>   2: _Atomic type display and --skip_emitting_atomic_typedefs.          : Ok
>   3: Auxiliary tools: pglobal, prefcnt, dtagnames.                      : Ok
>   4: Bitfield layout and data member filtering.                         : Ok
>   5: dwarf_loader coverage: bitfields, templates, enums, inlines.       : Ok
>   6: Bitfield typedef recoding (tag__recode_dwarf_bitfield).            : Ok
>   7: BTF arena type tag encoding for kfuncs.                            : Ok
>   8: BTF multi-dimensional array encoding and round-trip.               : Ok
>   9: BTF bitfield encoding and loading round-trip.                      : Ok
>  10: BTF VAR and DATASEC encoding for global variables.                 : Ok
>  11: BTF deduplication of array types across CUs.                       : Ok
>  12: Distilled base BTF generation.                                     : Ok
>  13: BTF encoding options.                                              : Ok
>  14: BTF encoder coverage.                                              : Ok
>  15: Validation of BTF encoding of functions.                           : Ok
>  16: BTF_KIND_FWD encoding and loading round-trip.                      : Ok
>  17: BTF encoding with invalid symbol names.                            : Ok
>  18: Split BTF encoding (vmlinux base + kernel module).                 : Skip (no loaded module with debuginfod-available debuginfo found)
>  19: Check BTF type tag order.                                          : Ok
>  20: BTF FLOAT and ENUM64 type encoding.                                : Ok
>  21: BTF encoder verbose logging coverage.                              : Ok
>  23: BTF encoding into ELF via pahole -J (btf_encoder__write_elf).      : Ok
>  24: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
>  25: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
>  26: BTF true_signature: clang optimized with large union parameter     : Ok
>  27: BTF true_signature: clang optimized parameters (scalar)            : Ok
>  28: BTF true_signature: clang optimized with stack parameters (9 params: Ok
>  29: BTF true_signature: clang optimized with stack parameters (non-stat: Ok
>  30: Class name list from file.                                         : Ok
>  31: CLI display and filtering options.                                 : Ok
>  32: codiff struct comparison.                                          : Ok
>  33: codiff coverage: terse, functions, verbose, multi-CU.              : Ok
>  34: codiff member change coverage.                                     : Ok
>  35: codiff multi-CU: __cus__find_cu_by_name coverage.                  : Ok
>  36: Compilable output and type filtering.                              : Ok
>  37: Type containment and pointer search.                               : Ok
>  38: C++ namespace and using-declaration display.                       : Ok
>  39: C++ variadic template parameter pack handling.                     : Ok
>  40: Class name filtering.                                              : Ok
>  41: Default BTF on a system without BTF.                               : Ok
>  42: Display format options.                                            : Ok
>  43: dwarf_loader.c edge cases: bitfield recode, inlining, call sites.  : Ok
>  44: dwarves.c core API coverage.                                       : Ok
>  45: DWZ alternate debug file type resolution.                          : Ok
>  46: Atomic typedef emission.                                           : Ok
>  47: Legacy atomic_ base type emission via --compile (hand-crafted DWARF: Ok
>  48: dwarves_emit.c / dwarves_reorganize.c coverage.                    : Ok
>  49: Enumerator search.                                                 : Ok
>  50: Expand pointers option.                                            : Ok
>  51: Type expansion and anonymous struct options.                       : Ok
>  52: Flexible arrays accounting.                                        : Ok
>  53: Validation of GCC optimized parameters in default BTF.             : Ok
>  54: Validation of BTF encoding of true_signatures.                     : Skip (no optimizations applied.)
>  56: Multi-file loading (cus__load_files).                              : Ok
>  57: Version output.                                                    : Ok
>  58: Header, range and seek_bytes prettify paths.                       : Ok
>  59: pahole.c scattered option paths.                                   : Ok
>  60: pdwtags DWARF tag display.                                         : Ok
>  61: Check that pfunct can print btf_decl_tags read from BTF.           : Ok
>  62: pfunct coverage: symtab, class, expand_types, compile.             : Ok
>  63: pfunct function statistics.                                        : Ok
>  64: pglobal basic: variables, functions, static exclusion.             : Ok
>  65: prefcnt.c: reference counting coverage.                            : Ok
>  68: Cacheline boundary display with large structs.                     : Ok
>  70: Sizes and holes display.                                           : Ok
>  71: Small files coverage: elf_symtab, gobuffer, dutil, pglobal.        : Ok
>  72: Sort output and separator.                                         : Ok
>  73: Typedef chain display.                                             : Ok
>  55: Compare parallel vs merged CU loading for inter-CU type references.: Ok    
>  66: Pretty printing of files using DWARF type information.             : Ok    
>  67: Prototype expression parsing and prettify.                         : Ok
>  69: Parallel reproducible DWARF Loading/Serial BTF encoding.           : Ok    
>  22: BTF encoding on vmlinux.                                           : Ok    
> Saved timing data to .test-times (73 tests)
> 
> + '[' ']'
> + set +o xtrace
> clang version 22.1.8 (Fedora 22.1.8-20.fc45)
> Target: x86_64-redhat-linux-gnu
> Thread model: posix
> InstalledDir: /usr/bin
> Configuration file: /etc/clang/x86_64-redhat-linux-gnu-clang.cfg
> System configuration file directory: /etc/clang/
> Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/16
> Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/16
> Candidate multilib: .;@m64
> Candidate multilib: 32;@m32
> Selected multilib: .;@m64
> mkdir: cannot create directory 'build': File exists
> -- Setting BUILD_SHARED_LIBS = ON
> -- Checking availability of DWARF and ELF development libraries
> -- Checking availability of DWARF and ELF development libraries - done
> -- Checking availability of argp library
> -- Assuming argp is in libc
> -- Checking availability of argp library - done
> -- Checking availability of obstack library
> -- Assuming obstack is in libc
> -- Checking availability of obstack library - done
> -- Version: v1.31-tarball-g416753b4ba90 (from HEAD file)
> -- Configuring done (0.1s)
> -- Generating done (0.0s)
> -- Build files have been written to: /git/dwarves-1.31/build
> make: Entering directory '/git/dwarves-1.31/build'
> [ 36%] Built target bpf
> [ 56%] Built target dwarves
> [ 65%] Built target dwarves_reorganize
> [ 67%] Built target dwarves_emit
> [ 67%] Built target dtagnames
> [ 70%] Built target codiff
> [ 74%] Built target pdwtags
> [ 77%] Built target pglobal
> [ 82%] Built target scncopy
> [ 86%] Built target syscse
> [ 89%] Built target prefcnt
> [ 93%] Built target ctracer
> [ 96%] Built target pfunct
> [100%] Built target pahole
> make: Leaving directory '/git/dwarves-1.31/build'
> Testing pahole version:
>   v1.31-tarball-g416753b4ba90
> 
> Verbose mode enabled - showing diagnostic information:
>   Architecture: x86_64
>   CPUs: 32
>   Memory: 62.7 GB
>   Swap: 8.0 GB
>   Parallelism: unlimited (all tests run in parallel)
>     Tip: On low-memory systems, use -j to limit parallelism (e.g., -j 4 or -j 1)
>   Test artifacts: /tmp/pahole-tests/
>   Compiler: clang version 22.1.8 (Fedora 22.1.8-20.fc45)
>   libc: ldd (GNU libc) 2.44
>   bpftool: bpftool v7.7.0
>   VMLINUX: /tmp/vmlinux
>   PERF_BIN: not set
>   PERF_SRC_DIR: not set
> 
>   1: dwarves_emit.c: _Atomic type compile emission.                     : Ok
>   2: _Atomic type display and --skip_emitting_atomic_typedefs.          : Ok
>   3: Auxiliary tools: pglobal, prefcnt, dtagnames.                      : Ok
>   4: Bitfield layout and data member filtering.                         : Ok
>   5: dwarf_loader coverage: bitfields, templates, enums, inlines.       : Ok
>   6: Bitfield typedef recoding (tag__recode_dwarf_bitfield).            : Ok
>   7: BTF arena type tag encoding for kfuncs.                            : Ok
>   8: BTF multi-dimensional array encoding and round-trip.               : Ok
>   9: BTF bitfield encoding and loading round-trip.                      : Ok
>  10: BTF VAR and DATASEC encoding for global variables.                 : Ok
>  11: BTF deduplication of array types across CUs.                       : Ok
>  12: Distilled base BTF generation.                                     : Ok
>  13: BTF encoding options.                                              : Ok
>  14: BTF encoder coverage.                                              : Ok
>  15: Validation of BTF encoding of functions.                           : Ok
>  16: BTF_KIND_FWD encoding and loading round-trip.                      : Ok
>  17: BTF encoding with invalid symbol names.                            : Ok
>  18: Split BTF encoding (vmlinux base + kernel module).                 : Skip (no loaded module with debuginfod-available debuginfo found)
>  19: Check BTF type tag order.                                          : Ok
>  20: BTF FLOAT and ENUM64 type encoding.                                : Ok
>  21: BTF encoder verbose logging coverage.                              : Ok
>  22: BTF encoding into ELF via pahole -J (btf_encoder__write_elf).      : Ok
>  23: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
>  24: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
>  25: BTF true_signature: clang optimized with large union parameter     : Ok
>  26: BTF true_signature: clang optimized parameters (scalar)            : Ok
>  27: BTF true_signature: clang optimized with stack parameters (9 params: Ok
>  28: BTF true_signature: clang optimized with stack parameters (non-stat: Ok
>  29: Class name list from file.                                         : Ok
>  30: CLI display and filtering options.                                 : Ok
>  31: codiff struct comparison.                                          : Ok
>  32: codiff coverage: terse, functions, verbose, multi-CU.              : Ok
>  33: codiff member change coverage.                                     : Ok
>  34: codiff multi-CU: __cus__find_cu_by_name coverage.                  : Ok
>  35: Compilable output and type filtering.                              : Ok
>  36: Type containment and pointer search.                               : Ok
>  37: C++ namespace and using-declaration display.                       : Ok
>  38: C++ variadic template parameter pack handling.                     : Ok
>  39: Class name filtering.                                              : Ok
>  40: Default BTF on a system without BTF.                               : Ok
>  41: Display format options.                                            : Ok
>  42: dwarf_loader.c edge cases: bitfield recode, inlining, call sites.  : Ok
>  43: dwarves.c core API coverage.                                       : Ok
>  44: DWZ alternate debug file type resolution.                          : Ok
>  45: Atomic typedef emission.                                           : Ok
>  46: Legacy atomic_ base type emission via --compile (hand-crafted DWARF: Ok
>  47: dwarves_emit.c / dwarves_reorganize.c coverage.                    : Ok
>  48: Enumerator search.                                                 : Ok
>  49: Expand pointers option.                                            : Ok
>  50: Type expansion and anonymous struct options.                       : Ok
>  51: Flexible arrays accounting.                                        : Ok
>  52: Validation of GCC optimized parameters in default BTF.             : Ok
>  53: Validation of BTF encoding of true_signatures.                     : Skip (no optimizations applied.)
>  54: Multi-file loading (cus__load_files).                              : Ok
>  55: Version output.                                                    : Ok
>  56: Header, range and seek_bytes prettify paths.                       : Ok
>  57: pahole.c scattered option paths.                                   : Ok
>  58: pdwtags DWARF tag display.                                         : Ok
>  59: Check that pfunct can print btf_decl_tags read from BTF.           : Ok
>  60: pfunct coverage: symtab, class, expand_types, compile.             : Ok
>  61: pfunct function statistics.                                        : Ok
>  62: pglobal basic: variables, functions, static exclusion.             : Ok
>  63: prefcnt.c: reference counting coverage.                            : Ok
>  64: Cacheline boundary display with large structs.                     : Ok
>  65: Sizes and holes display.                                           : Ok
>  66: Small files coverage: elf_symtab, gobuffer, dutil, pglobal.        : Ok
>  67: Sort output and separator.                                         : Ok
>  68: Typedef chain display.                                             : Ok
>  70: Compare parallel vs merged CU loading for inter-CU type references.: Ok
>  71: Pretty printing of files using DWARF type information.             : Ok
>  72: Prototype expression parsing and prettify.                         : Ok
>  73: Parallel reproducible DWARF Loading/Serial BTF encoding.           : Ok    
>  69: BTF encoding on vmlinux.                                           : Ok    
> Saved timing data to .test-times (73 tests)
> 
> toolsbuilder@five:~$ 
> 
> 


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

* 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
  2026-08-30 17:08             ` RFT: coverage analysis and lots more regression tests in the 'next' branch. Was: " Alan Maguire
@ 2026-08-31  0:18               ` Arnaldo Carvalho de Melo
  2026-08-31  0:48                 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-08-31  0:18 UTC (permalink / raw)
  To: Alan Maguire
  Cc: Jiri Olsa, Clark Williams, dwarves, Arnaldo Carvalho de Melo, bpf,
	Yonghong Song, Andrii Nakryiko

On Sun, Aug 30, 2026 at 06:08:49PM +0100, Alan Maguire wrote:
> On 29/08/2026 21:21, Arnaldo Carvalho de Melo wrote:
> > On Fri, Aug 28, 2026 at 07:59:24PM -0300, Arnaldo Carvalho de Melo wrote:
> >> I'm now in the process of cherry picking non-Rust related patches,
> >> things that don't touch the .c files in the tree, just adding coverage
> >> analysis, tons of tests and scripts for helping us do bisection tests,
> >> etc.
  
> >> I just pushed out the first batch to the next branch, I invite people to
> >> try it and report results, it should help us to catch problems sooner by
> >> testing most of the paths in the codebase, which is super important
> >> these days where we are having (or will have) tons of patches being
> >> submitted.

> > 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.

Since it sat there for a couple days and you run it throug CI and it
passed, I'm moving it from next to master, I still have some branches to
merge but will concentrate on the rust patches as we need to experiment
for our talk at LPC, but will do it in a separate development branch,
leaving what is in master for a few more days to then cut 1.32, as there
are requests from at least Fedora for a new release as users are needing
features that are post 1.31.

Thanks for testing it!

- Arnaldo
 
> > 
> > toolsbuilder@five:~$ cat dm.log/summary
> > Subject: tools build test for http://192.168.86.5/pahole/dwarves-1.31.tar.xz build-and-test-cmd.sh
> > 
> >    1    78.93 almalinux:8                   : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28) , clang version 21.1.8 ( 21.1.8-1.module_el8.10.0+4172+b6b13d75) flex 2.6.1
> >    2   158.15 almalinux:9                   : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-2.el9) flex 2.6.4
> >    3    36.95 almalinux:9-i386              : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-2.el9) flex 2.6.4
> >    4   167.45 almalinux:10                  : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 21.1.8 (AlmaLinux OS Foundation 21.1.8-1.el10.alma.1) flex 2.6.4
> >    5   293.08 alpine:3.22                   : Ok   gcc (Alpine 14.2.0) 14.2.0 , Alpine clang version 20.1.8 flex 2.6.4
> >    6   289.06 alpine:3.23                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 21.1.2 flex 2.6.4
> >    7   255.51 alpine:3.24                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 22.1.3 flex 2.6.4
> >    8   262.55 alpine:edge                   : Ok   gcc (Alpine 15.2.0) 15.2.0 , Alpine clang version 22.1.8 flex 2.6.4
> >    9   152.16 amazonlinux:2023              : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5) , clang version 15.0.7 (AWS 15.0.7-3.amzn2023.0.4) flex 2.6.4
> >   10   152.38 amazonlinux:devel             : Ok   gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4) , clang version 15.0.6 (Amazon Linux 15.0.6-3.amzn2023.0.2) flex 2.6.4
> >   11   171.22 archlinux:base                : Ok   gcc (GCC) 16.2.1 20260810 , clang version 22.1.8 flex 2.6.4
> >   12   160.21 centos:stream                 : Ok   gcc (GCC) 14.4.1 20260724 (Red Hat 14.4.1-2) , clang version 22.1.8 (CentOS 22.1.8-1.el10) flex 2.6.4
> >   13    77.34 debian:11                     : Ok   gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 13.0.1-6~deb11u1 flex 2.6.4
> >   14   154.23 debian:12                     : Ok   gcc (Debian 12.2.0-14+deb12u1) 12.2.0 , Debian clang version 14.0.6 flex 2.6.4
> >   15   157.32 debian:13                     : Ok   gcc (Debian 14.2.0-19) 14.2.0 , Debian clang version 19.1.7 (3+b1) flex 2.6.4
> >   16   156.96 debian:experimental           : Ok   gcc (Debian 16.1.0-3) 16.1.0 , Debian clang version 21.1.8 (10) flex 2.6.4
> >   17   157.12 fedora:40                     : Ok   gcc (GCC) 14.2.1 20240912 (Red Hat 14.2.1-3) , clang version 18.1.8 (Fedora 18.1.8-2.fc40) flex 2.6.4
> >   18   158.62 fedora:41                     : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 19.1.7 (Fedora 19.1.7-5.fc41) flex 2.6.4
> >   19   161.74 fedora:42                     : Ok   gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7) , clang version 20.1.8 (Fedora 20.1.8-4.fc42) flex 2.6.4
> >   20   160.37 fedora:43                     : Ok   gcc (GCC) 15.3.1 20260722 (Red Hat 15.3.1-1) , clang version 21.1.8 (Fedora 21.1.8-6.fc43) flex 2.6.4
> >   21   239.67 fedora:44                     : Ok   gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2) , clang version 22.1.8 (Fedora 22.1.8-4.fc44) flex 2.6.4
> >   22   238.08 fedora:45                     : Ok   gcc (GCC) 16.2.1 20260819 (Red Hat 16.2.1-2) , clang version 22.1.8 (Fedora 22.1.8-20.fc45) flex 2.6.4
> >   23   170.21 fedora:rawhide                : Ok   gcc (GCC) 16.1.1 20260703 (Red Hat 16.1.1-4) , clang version 22.1.8 (Fedora 22.1.8-20.fc45) flex 2.6.4
> >   24    89.22 gentoo:stage3                 : Ok   gcc (Gentoo 15.3.0 p8) 15.3.0  flex 2.6.4
> >   25   166.60 manjaro:base                  : Ok   gcc (GCC) 16.1.1 20260625 , clang version 22.1.6 flex 2.6.4
> >   26   172.84 opensuse:16.0                 : Ok   gcc (SUSE Linux) 15.3.0 , clang version 19.1.7 flex 2.6.4
> >   27   166.50 opensuse:tumbleweed           : Ok   gcc (SUSE Linux) 15.3.0 , clang version 22.1.8 flex 2.6.4
> >   28    80.73 oraclelinux:8                 : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28.0.1) , clang version 21.1.8 ( 21.1.8-1.module+el8.10.0+90887+a5269809) flex 2.6.1
> >   29   162.06 oraclelinux:9                 : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14.0.1) , clang version 21.1.8 ( 21.1.8-2.el9) flex 2.6.4
> >   30   164.88 oraclelinux:10                : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4.0.1) , clang version 21.1.8 (Oracle America 21.1.8-1.el10) flex 2.6.4
> >   31    82.10 rockylinux:8                  : Ok   gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28) , clang version 21.1.8 (RESF 21.1.8-1.module+el8.10.0+40180+8e26bdb3) flex 2.6.1
> >   32   162.01 rockylinux:9                  : Ok   gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-14) , clang version 21.1.8 (RESF 21.1.8-2.el9) flex 2.6.4
> >   33   166.23 rockylinux:10                 : Ok   gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4) , clang version 21.1.8 (RESF 21.1.8-1.el10) flex 2.6.4
> >   34   169.75 ubuntu:22.04                  : Ok   gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0 , Ubuntu clang version 14.0.0-1ubuntu1.1 flex 2.6.4
> >   35   162.24 ubuntu:24.04                  : Ok   gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 , Ubuntu clang version 18.1.3 (1ubuntu1) flex 2.6.4
> >   36   162.16 ubuntu:25.04                  : Ok   gcc (Ubuntu 14.2.0-19ubuntu2) 14.2.0 , Ubuntu clang version 20.1.2 (0ubuntu1) flex 2.6.4
> >   37   161.96 ubuntu:25.10                  : Ok   gcc (Ubuntu 15.2.0-4ubuntu4) 15.2.0 , Ubuntu clang version 20.1.8 (0ubuntu4) flex 2.6.4
> >   38   163.52 ubuntu:26.04                  : Ok   gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0 , Ubuntu clang version 21.1.8 (6ubuntu1) flex 2.6.4
> > BUILD_TARBALL_HEAD=eeb6956261d2fbe71715f0633a68fdc840b5f5ce
> > 39 6242.1
> > toolsbuilder@five:~$
> > 
> > For instance:
> > 
> > toolsbuilder@five:~$ cat dm.log/fedora\:rawhide 
> > fedora:rawhide
> > Downloading http://192.168.86.5/pahole/dwarves-1.31.tar.xz...
> >   % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
> >                                  Dload  Upload  Total   Spent   Left   Speed
> > 100  2.34M 100  2.34M   0      0 530.8M      0                              0
> > dwarves-1.31/config.h.cmake
> > dwarves-1.31/btfdiff
> > <SNIP>
> > dwarves-1.31/tests/typedef_chain.sh
> > dwarves-1.31/tests/.test-times.seed
> > dwarves-1.31/HEAD
> > BUILD_TARBALL_HEAD=eeb6956261d2fbe71715f0633a68fdc840b5f5ce
> > Using built-in specs.
> > COLLECT_GCC=gcc
> > COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/16/lto-wrapper
> > OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
> > OFFLOAD_TARGET_DEFAULT=1
> > Target: x86_64-redhat-linux
> > Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,cobol,algol68,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugzilla.redhat.com/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-16.1.1-build/gcc-16.1.1-20260703/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-tls=gnu2 --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1 --disable-libssp
> > Thread model: posix
> > Supported LTO compression algorithms: zlib zstd
> > gcc version 16.1.1 20260703 (Red Hat 16.1.1-4) (GCC) 
> > -- The C compiler identification is GNU 16.1.1
> > -- Detecting C compiler ABI info
> > -- Detecting C compiler ABI info - done
> > -- Check for working C compiler: /usr/bin/cc - skipped
> > -- Detecting C compile features
> > -- Detecting C compile features - done
> > -- Setting BUILD_SHARED_LIBS = ON
> > -- Checking availability of DWARF and ELF development libraries
> > -- Looking for dwfl_module_build_id in elf
> > -- Looking for dwfl_module_build_id in elf - found
> > -- Found dwarf.h header: /usr/include
> > -- Found elfutils/libdw.h header: /usr/include
> > -- Found libdw library: /usr/lib64/libdw.so
> > -- Found libelf library: /usr/lib64/libelf.so
> > -- Checking availability of DWARF and ELF development libraries - done
> > -- Found ZLIB: /usr/lib64/libz.so (found version "1.3.1")
> > -- Checking availability of argp library
> > -- Assuming argp is in libc
> > -- Checking availability of argp library - done
> > -- Checking availability of obstack library
> > -- Assuming obstack is in libc
> > -- Checking availability of obstack library - done
> > -- Version: v1.31-tarball-g416753b4ba90 (from HEAD file)
> > -- Performing Test HAVE_REALLOCARRAY_SUPPORT
> > -- Performing Test HAVE_REALLOCARRAY_SUPPORT - Success
> > -- Configuring done (0.6s)
> > -- Generating done (0.0s)
> > -- Build files have been written to: /git/dwarves-1.31/build
> > make: Entering directory '/git/dwarves-1.31/build'
> > [  1%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf.c.o
> > [  3%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/features.c.o
> > [  5%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf.c.o
> > [  8%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_relocate.c.o
> > [  8%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_dump.c.o
> > [ 10%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/hashmap.c.o
> > [ 13%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/bpf_prog_linfo.c.o
> > [ 13%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf.c.o
> > [ 15%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_probes.c.o
> > [ 18%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/libbpf_utils.c.o
> > [ 20%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/linker.c.o
> > [ 20%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/btf_iter.c.o
> > [ 22%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/elf.c.o
> > [ 24%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/gen_loader.c.o
> > [ 25%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/netlink.c.o
> > [ 27%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/nlattr.c.o
> > [ 29%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/ringbuf.c.o
> > [ 31%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/relo_core.c.o
> > [ 32%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/usdt.c.o
> > [ 36%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/strset.c.o
> > [ 36%] Building C object CMakeFiles/bpf.dir/lib/bpf/src/zip.c.o
> > [ 36%] Built target bpf
> > [ 39%] Building C object CMakeFiles/dwarves.dir/dwarves.c.o
> > [ 39%] Building C object CMakeFiles/dwarves.dir/dwarves_fprintf.c.o
> > [ 43%] Building C object CMakeFiles/dwarves.dir/rbtree.c.o
> > [ 43%] Building C object CMakeFiles/dwarves.dir/libctf.c.o
> > [ 46%] Building C object CMakeFiles/dwarves.dir/ctf_loader.c.o
> > [ 48%] Building C object CMakeFiles/dwarves.dir/gobuffer.c.o
> > [ 51%] Building C object CMakeFiles/dwarves.dir/btf_loader.c.o
> > [ 51%] Building C object CMakeFiles/dwarves.dir/elf_symtab.c.o
> > [ 48%] Building C object CMakeFiles/dwarves.dir/btf_encoder.c.o
> > [ 53%] Building C object CMakeFiles/dwarves.dir/dwarf_loader.c.o
> > [ 55%] Building C object CMakeFiles/dwarves.dir/dutil.c.o
> > [ 56%] Linking C shared library libdwarves.so
> > [ 56%] Built target dwarves
> > [ 60%] Building C object CMakeFiles/syscse.dir/syscse.c.o
> > [ 62%] Building C object CMakeFiles/dtagnames.dir/dtagnames.c.o
> > [ 65%] Building C object CMakeFiles/prefcnt.dir/prefcnt.c.o
> > [ 65%] Building C object CMakeFiles/dwarves_emit.dir/dwarves_emit.c.o
> > [ 72%] Building C object CMakeFiles/scncopy.dir/scncopy.c.o
> > [ 68%] Building C object CMakeFiles/pglobal.dir/pglobal.c.o
> > [ 62%] Building C object CMakeFiles/pdwtags.dir/pdwtags.c.o
> > [ 72%] Building C object CMakeFiles/dwarves_reorganize.dir/dwarves_reorganize.c.o
> > [ 68%] Building C object CMakeFiles/codiff.dir/codiff.c.o
> > [ 74%] Building C object CMakeFiles/scncopy.dir/elfcreator.c.o
> > [ 75%] Linking C executable dtagnames
> > [ 79%] Linking C executable pdwtags
> > [ 81%] Linking C executable syscse
> > [ 81%] Linking C executable prefcnt
> > [ 82%] Linking C executable pglobal
> > [ 84%] Linking C executable scncopy
> > [ 86%] Linking C shared library libdwarves_reorganize.so
> > [ 86%] Built target dtagnames
> > [ 86%] Built target pdwtags
> > [ 86%] Built target pglobal
> > [ 86%] Built target prefcnt
> > [ 86%] Built target syscse
> > [ 87%] Linking C shared library libdwarves_emit.so
> > [ 87%] Built target scncopy
> > [ 87%] Built target dwarves_reorganize
> > [ 87%] Built target dwarves_emit
> > [ 89%] Linking C executable codiff
> > [ 91%] Building C object CMakeFiles/pahole.dir/pahole.c.o
> > [ 93%] Building C object CMakeFiles/ctracer.dir/ctracer.c.o
> > [ 94%] Building C object CMakeFiles/pfunct.dir/pfunct.c.o
> > [ 94%] Built target codiff
> > [ 98%] Linking C executable ctracer
> > [ 98%] Linking C executable pfunct
> > [ 98%] Built target pfunct
> > [ 98%] Built target ctracer
> > [100%] Linking C executable pahole
> > [100%] Built target pahole
> > make: Leaving directory '/git/dwarves-1.31/build'
> > Testing pahole version:
> >   v1.31-tarball-g416753b4ba90
> > 
> > Verbose mode enabled - showing diagnostic information:
> >   Architecture: x86_64
> >   CPUs: 32
> >   Memory: 62.7 GB
> >   Swap: 8.0 GB
> >   Parallelism: unlimited (all tests run in parallel)
> >     Tip: On low-memory systems, use -j to limit parallelism (e.g., -j 4 or -j 1)
> >   Test artifacts: /tmp/pahole-tests/
> >   Compiler: gcc (GCC) 16.1.1 20260703 (Red Hat 16.1.1-4)
> >   libc: ldd (GNU libc) 2.44
> >   bpftool: bpftool v7.7.0
> >   VMLINUX: /tmp/vmlinux
> >   PERF_BIN: not set
> >   PERF_SRC_DIR: not set
> > 
> >   1: dwarves_emit.c: _Atomic type compile emission.                     : Ok
> >   2: _Atomic type display and --skip_emitting_atomic_typedefs.          : Ok
> >   3: Auxiliary tools: pglobal, prefcnt, dtagnames.                      : Ok
> >   4: Bitfield layout and data member filtering.                         : Ok
> >   5: dwarf_loader coverage: bitfields, templates, enums, inlines.       : Ok
> >   6: Bitfield typedef recoding (tag__recode_dwarf_bitfield).            : Ok
> >   7: BTF arena type tag encoding for kfuncs.                            : Ok
> >   8: BTF multi-dimensional array encoding and round-trip.               : Ok
> >   9: BTF bitfield encoding and loading round-trip.                      : Ok
> >  10: BTF VAR and DATASEC encoding for global variables.                 : Ok
> >  11: BTF deduplication of array types across CUs.                       : Ok
> >  12: Distilled base BTF generation.                                     : Ok
> >  13: BTF encoding options.                                              : Ok
> >  14: BTF encoder coverage.                                              : Ok
> >  15: Validation of BTF encoding of functions.                           : Ok
> >  16: BTF_KIND_FWD encoding and loading round-trip.                      : Ok
> >  17: BTF encoding with invalid symbol names.                            : Ok
> >  18: Split BTF encoding (vmlinux base + kernel module).                 : Skip (no loaded module with debuginfod-available debuginfo found)
> >  19: Check BTF type tag order.                                          : Ok
> >  20: BTF FLOAT and ENUM64 type encoding.                                : Ok
> >  21: BTF encoder verbose logging coverage.                              : Ok
> >  23: BTF encoding into ELF via pahole -J (btf_encoder__write_elf).      : Ok
> >  24: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
> >  25: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
> >  26: BTF true_signature: clang optimized with large union parameter     : Ok
> >  27: BTF true_signature: clang optimized parameters (scalar)            : Ok
> >  28: BTF true_signature: clang optimized with stack parameters (9 params: Ok
> >  29: BTF true_signature: clang optimized with stack parameters (non-stat: Ok
> >  30: Class name list from file.                                         : Ok
> >  31: CLI display and filtering options.                                 : Ok
> >  32: codiff struct comparison.                                          : Ok
> >  33: codiff coverage: terse, functions, verbose, multi-CU.              : Ok
> >  34: codiff member change coverage.                                     : Ok
> >  35: codiff multi-CU: __cus__find_cu_by_name coverage.                  : Ok
> >  36: Compilable output and type filtering.                              : Ok
> >  37: Type containment and pointer search.                               : Ok
> >  38: C++ namespace and using-declaration display.                       : Ok
> >  39: C++ variadic template parameter pack handling.                     : Ok
> >  40: Class name filtering.                                              : Ok
> >  41: Default BTF on a system without BTF.                               : Ok
> >  42: Display format options.                                            : Ok
> >  43: dwarf_loader.c edge cases: bitfield recode, inlining, call sites.  : Ok
> >  44: dwarves.c core API coverage.                                       : Ok
> >  45: DWZ alternate debug file type resolution.                          : Ok
> >  46: Atomic typedef emission.                                           : Ok
> >  47: Legacy atomic_ base type emission via --compile (hand-crafted DWARF: Ok
> >  48: dwarves_emit.c / dwarves_reorganize.c coverage.                    : Ok
> >  49: Enumerator search.                                                 : Ok
> >  50: Expand pointers option.                                            : Ok
> >  51: Type expansion and anonymous struct options.                       : Ok
> >  52: Flexible arrays accounting.                                        : Ok
> >  53: Validation of GCC optimized parameters in default BTF.             : Ok
> >  54: Validation of BTF encoding of true_signatures.                     : Skip (no optimizations applied.)
> >  56: Multi-file loading (cus__load_files).                              : Ok
> >  57: Version output.                                                    : Ok
> >  58: Header, range and seek_bytes prettify paths.                       : Ok
> >  59: pahole.c scattered option paths.                                   : Ok
> >  60: pdwtags DWARF tag display.                                         : Ok
> >  61: Check that pfunct can print btf_decl_tags read from BTF.           : Ok
> >  62: pfunct coverage: symtab, class, expand_types, compile.             : Ok
> >  63: pfunct function statistics.                                        : Ok
> >  64: pglobal basic: variables, functions, static exclusion.             : Ok
> >  65: prefcnt.c: reference counting coverage.                            : Ok
> >  68: Cacheline boundary display with large structs.                     : Ok
> >  70: Sizes and holes display.                                           : Ok
> >  71: Small files coverage: elf_symtab, gobuffer, dutil, pglobal.        : Ok
> >  72: Sort output and separator.                                         : Ok
> >  73: Typedef chain display.                                             : Ok
> >  55: Compare parallel vs merged CU loading for inter-CU type references.: Ok    
> >  66: Pretty printing of files using DWARF type information.             : Ok    
> >  67: Prototype expression parsing and prettify.                         : Ok
> >  69: Parallel reproducible DWARF Loading/Serial BTF encoding.           : Ok    
> >  22: BTF encoding on vmlinux.                                           : Ok    
> > Saved timing data to .test-times (73 tests)
> > 
> > + '[' ']'
> > + set +o xtrace
> > clang version 22.1.8 (Fedora 22.1.8-20.fc45)
> > Target: x86_64-redhat-linux-gnu
> > Thread model: posix
> > InstalledDir: /usr/bin
> > Configuration file: /etc/clang/x86_64-redhat-linux-gnu-clang.cfg
> > System configuration file directory: /etc/clang/
> > Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/16
> > Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/16
> > Candidate multilib: .;@m64
> > Candidate multilib: 32;@m32
> > Selected multilib: .;@m64
> > mkdir: cannot create directory 'build': File exists
> > -- Setting BUILD_SHARED_LIBS = ON
> > -- Checking availability of DWARF and ELF development libraries
> > -- Checking availability of DWARF and ELF development libraries - done
> > -- Checking availability of argp library
> > -- Assuming argp is in libc
> > -- Checking availability of argp library - done
> > -- Checking availability of obstack library
> > -- Assuming obstack is in libc
> > -- Checking availability of obstack library - done
> > -- Version: v1.31-tarball-g416753b4ba90 (from HEAD file)
> > -- Configuring done (0.1s)
> > -- Generating done (0.0s)
> > -- Build files have been written to: /git/dwarves-1.31/build
> > make: Entering directory '/git/dwarves-1.31/build'
> > [ 36%] Built target bpf
> > [ 56%] Built target dwarves
> > [ 65%] Built target dwarves_reorganize
> > [ 67%] Built target dwarves_emit
> > [ 67%] Built target dtagnames
> > [ 70%] Built target codiff
> > [ 74%] Built target pdwtags
> > [ 77%] Built target pglobal
> > [ 82%] Built target scncopy
> > [ 86%] Built target syscse
> > [ 89%] Built target prefcnt
> > [ 93%] Built target ctracer
> > [ 96%] Built target pfunct
> > [100%] Built target pahole
> > make: Leaving directory '/git/dwarves-1.31/build'
> > Testing pahole version:
> >   v1.31-tarball-g416753b4ba90
> > 
> > Verbose mode enabled - showing diagnostic information:
> >   Architecture: x86_64
> >   CPUs: 32
> >   Memory: 62.7 GB
> >   Swap: 8.0 GB
> >   Parallelism: unlimited (all tests run in parallel)
> >     Tip: On low-memory systems, use -j to limit parallelism (e.g., -j 4 or -j 1)
> >   Test artifacts: /tmp/pahole-tests/
> >   Compiler: clang version 22.1.8 (Fedora 22.1.8-20.fc45)
> >   libc: ldd (GNU libc) 2.44
> >   bpftool: bpftool v7.7.0
> >   VMLINUX: /tmp/vmlinux
> >   PERF_BIN: not set
> >   PERF_SRC_DIR: not set
> > 
> >   1: dwarves_emit.c: _Atomic type compile emission.                     : Ok
> >   2: _Atomic type display and --skip_emitting_atomic_typedefs.          : Ok
> >   3: Auxiliary tools: pglobal, prefcnt, dtagnames.                      : Ok
> >   4: Bitfield layout and data member filtering.                         : Ok
> >   5: dwarf_loader coverage: bitfields, templates, enums, inlines.       : Ok
> >   6: Bitfield typedef recoding (tag__recode_dwarf_bitfield).            : Ok
> >   7: BTF arena type tag encoding for kfuncs.                            : Ok
> >   8: BTF multi-dimensional array encoding and round-trip.               : Ok
> >   9: BTF bitfield encoding and loading round-trip.                      : Ok
> >  10: BTF VAR and DATASEC encoding for global variables.                 : Ok
> >  11: BTF deduplication of array types across CUs.                       : Ok
> >  12: Distilled base BTF generation.                                     : Ok
> >  13: BTF encoding options.                                              : Ok
> >  14: BTF encoder coverage.                                              : Ok
> >  15: Validation of BTF encoding of functions.                           : Ok
> >  16: BTF_KIND_FWD encoding and loading round-trip.                      : Ok
> >  17: BTF encoding with invalid symbol names.                            : Ok
> >  18: Split BTF encoding (vmlinux base + kernel module).                 : Skip (no loaded module with debuginfod-available debuginfo found)
> >  19: Check BTF type tag order.                                          : Ok
> >  20: BTF FLOAT and ENUM64 type encoding.                                : Ok
> >  21: BTF encoder verbose logging coverage.                              : Ok
> >  22: BTF encoding into ELF via pahole -J (btf_encoder__write_elf).      : Ok
> >  23: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
> >  24: BTF true_signature: clang optimized aggregate parameters (2 structs: Ok
> >  25: BTF true_signature: clang optimized with large union parameter     : Ok
> >  26: BTF true_signature: clang optimized parameters (scalar)            : Ok
> >  27: BTF true_signature: clang optimized with stack parameters (9 params: Ok
> >  28: BTF true_signature: clang optimized with stack parameters (non-stat: Ok
> >  29: Class name list from file.                                         : Ok
> >  30: CLI display and filtering options.                                 : Ok
> >  31: codiff struct comparison.                                          : Ok
> >  32: codiff coverage: terse, functions, verbose, multi-CU.              : Ok
> >  33: codiff member change coverage.                                     : Ok
> >  34: codiff multi-CU: __cus__find_cu_by_name coverage.                  : Ok
> >  35: Compilable output and type filtering.                              : Ok
> >  36: Type containment and pointer search.                               : Ok
> >  37: C++ namespace and using-declaration display.                       : Ok
> >  38: C++ variadic template parameter pack handling.                     : Ok
> >  39: Class name filtering.                                              : Ok
> >  40: Default BTF on a system without BTF.                               : Ok
> >  41: Display format options.                                            : Ok
> >  42: dwarf_loader.c edge cases: bitfield recode, inlining, call sites.  : Ok
> >  43: dwarves.c core API coverage.                                       : Ok
> >  44: DWZ alternate debug file type resolution.                          : Ok
> >  45: Atomic typedef emission.                                           : Ok
> >  46: Legacy atomic_ base type emission via --compile (hand-crafted DWARF: Ok
> >  47: dwarves_emit.c / dwarves_reorganize.c coverage.                    : Ok
> >  48: Enumerator search.                                                 : Ok
> >  49: Expand pointers option.                                            : Ok
> >  50: Type expansion and anonymous struct options.                       : Ok
> >  51: Flexible arrays accounting.                                        : Ok
> >  52: Validation of GCC optimized parameters in default BTF.             : Ok
> >  53: Validation of BTF encoding of true_signatures.                     : Skip (no optimizations applied.)
> >  54: Multi-file loading (cus__load_files).                              : Ok
> >  55: Version output.                                                    : Ok
> >  56: Header, range and seek_bytes prettify paths.                       : Ok
> >  57: pahole.c scattered option paths.                                   : Ok
> >  58: pdwtags DWARF tag display.                                         : Ok
> >  59: Check that pfunct can print btf_decl_tags read from BTF.           : Ok
> >  60: pfunct coverage: symtab, class, expand_types, compile.             : Ok
> >  61: pfunct function statistics.                                        : Ok
> >  62: pglobal basic: variables, functions, static exclusion.             : Ok
> >  63: prefcnt.c: reference counting coverage.                            : Ok
> >  64: Cacheline boundary display with large structs.                     : Ok
> >  65: Sizes and holes display.                                           : Ok
> >  66: Small files coverage: elf_symtab, gobuffer, dutil, pglobal.        : Ok
> >  67: Sort output and separator.                                         : Ok
> >  68: Typedef chain display.                                             : Ok
> >  70: Compare parallel vs merged CU loading for inter-CU type references.: Ok
> >  71: Pretty printing of files using DWARF type information.             : Ok
> >  72: Prototype expression parsing and prettify.                         : Ok
> >  73: Parallel reproducible DWARF Loading/Serial BTF encoding.           : Ok    
> >  69: BTF encoding on vmlinux.                                           : Ok    
> > Saved timing data to .test-times (73 tests)
> > 
> > toolsbuilder@five:~$ 
> > 
> > 

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

* 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
  2026-08-31  0:18               ` Arnaldo Carvalho de Melo
@ 2026-08-31  0:48                 ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-08-31  0:48 UTC (permalink / raw)
  To: Alan Maguire
  Cc: Jiri Olsa, Clark Williams, dwarves, Arnaldo Carvalho de Melo, bpf,
	Yonghong Song, Andrii Nakryiko

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]$

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

end of thread, other threads:[~2026-08-31  0:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260821213510.22423-1-acme@kernel.org>
     [not found] ` <ao442rldWrCNG3zC@x2>
     [not found]   ` <d85a69a5-b08a-4ec8-b09c-4e45b7c1f712@oracle.com>
     [not found]     ` <ao7lqxytDiHmVmkk@x2>
     [not found]       ` <0e1c3820-c16b-4266-bde4-655b760b3db4@oracle.com>
2026-08-28 22:59         ` [PATCH v2 0/9] pahole: Support cross-CU type references and dwz alternate debug files Arnaldo Carvalho de Melo
     [not found]           ` <apM_W9ld8Bj3q5Vk@x2>
2026-08-30 17:08             ` RFT: coverage analysis and lots more regression tests in the 'next' branch. Was: " Alan Maguire
2026-08-31  0:18               ` Arnaldo Carvalho de Melo
2026-08-31  0:48                 ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox