Re: ANNOUNCE: pahole v1.20 (gcc11 DWARF5's default, lots of ELF sections, BTF)

From: Sedat Dilek
Date: Mon Feb 08 2021 - 07:40:31 EST


On Mon, Feb 8, 2021 at 1:32 PM Arnaldo Carvalho de Melo
<arnaldo.melo@xxxxxxxxx> wrote:
>
> Em Mon, Feb 08, 2021 at 03:44:54AM +0100, Sedat Dilek escreveu:
> > On Thu, Feb 4, 2021 at 11:07 PM Arnaldo Carvalho de Melo
> > <arnaldo.melo@xxxxxxxxx> wrote:
> > >
> > > Hi,
> > >
> > > The v1.20 release of pahole and its friends is out, mostly
> > > addressing problems related to gcc 11 defaulting to DWARF5 for -g,
> > > available at the usual places:
> > >
> > > Main git repo:
> > >
> > > git://git.kernel.org/pub/scm/devel/pahole/pahole.git
> > >
> > > Mirror git repo:
> > >
> > > https://github.com/acmel/dwarves.git
> > >
> > > tarball + gpg signature:
> > >
> > > https://fedorapeople.org/~acme/dwarves/dwarves-1.20.tar.xz
> > > https://fedorapeople.org/~acme/dwarves/dwarves-1.20.tar.bz2
> > > https://fedorapeople.org/~acme/dwarves/dwarves-1.20.tar.sign
> > >
> >
> > FYI:
> > Debian now ships dwarves package version 1.20-1 in unstable.
> >
> > Just a small nit to this release and its tagging:
> >
> > You did:
> > commit 0d415f68c468b77c5bf8e71965cd08c6efd25fc4 ("pahole: Prep 1.20")
> >
> > Is this new?
> >
> > The release before:
> > commit dd15aa4b0a6421295cbb7c3913429142fef8abe0 ("dwarves: Prep v1.19")
>
> Its minor but intentional, pahole is by far the most well known tool in
> dwarves, so using that name more frequently (the git repo is pahole.git
> , for instance) may help more quickly associate with the tool needed for
> BTF encoding, data analysis, etc. And since its not about only DWARF,
> perhaps transitioning to using 'pahole' more widely is interesting.
>

I am fine with that, Arnaldo.
The Git tree is called "pahole" Git, so that makes sense to me.

- Sedat -

> - Arnaldo
>
> > - Sedat -
> >
> > > Best Regards,
> > >
> > > - Arnaldo
> > >
> > > v1.20:
> > >
> > > BTF encoder:
> > >
> > > - Improve ELF error reporting using elf_errmsg(elf_errno()).
> > >
> > > - Improve objcopy error handling.
> > >
> > > - Fix handling of 'restrict' qualifier, that was being treated as a 'const'.
> > >
> > > - Support SHN_XINDEX in st_shndx symbol indexes, to handle ELF objects with
> > > more than 65534 sections, for instance, which happens with kernels built
> > > with 'KCFLAGS="-ffunction-sections -fdata-sections", Other cases may
> > > include when using FG-ASLR, LTO.
> > >
> > > - Cope with functions without a name, as seen sometimes when building kernel
> > > images with some versions of clang, when a SEGFAULT was taking place.
> > >
> > > - Fix BTF variable generation for kernel modules, not skipping variables at
> > > offset zero.
> > >
> > > - Fix address size to match what is in the ELF file being processed, to fix using
> > > a 64-bit pahole binary to generate BTF for a 32-bit vmlinux image.
> > >
> > > - Use kernel module ftrace addresses when finding which functions to encode,
> > > which increases the number of functions encoded.
> > >
> > > libbpf:
> > >
> > > - Allow use of packaged version, for distros wanting to dynamically link with
> > > the system's libbpf package instead of using the libbpf git submodule shipped
> > > in pahole's source code.
> > >
> > > DWARF loader:
> > >
> > > - Support DW_AT_data_bit_offset
> > >
> > > This appeared in DWARF4 but is supported only in gcc's -gdwarf-5,
> > > support it in a way that makes the output be the same for both cases.
> > >
> > > $ gcc -gdwarf-5 -c examples/dwarf5/bf.c
> > > $ pahole bf.o
> > > struct pea {
> > > long int a:1; /* 0: 0 8 */
> > > long int b:1; /* 0: 1 8 */
> > > long int c:1; /* 0: 2 8 */
> > >
> > > /* XXX 29 bits hole, try to pack */
> > > /* Bitfield combined with next fields */
> > >
> > > int after_bitfield; /* 4 4 */
> > >
> > > /* size: 8, cachelines: 1, members: 4 */
> > > /* sum members: 4 */
> > > /* sum bitfield members: 3 bits, bit holes: 1, sum bit holes: 29 bits */
> > > /* last cacheline: 8 bytes */
> > > };
> > >
> > > - DW_FORM_implicit_const in attr_numeric() and attr_offset()
> > >
> > > - Support DW_TAG_GNU_call_site, its the standardized rename of the previously supported
> > > DW_TAG_GNU_call_site.
> > >
> > > build:
> > >
> > > - Fix compilation on 32-bit architectures.
> > >
> > > Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
>
> --
>
> - Arnaldo