2022-08-22 23:59:20

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Hi,

The v1.24 release of pahole and its friends is out, with faster
BTF generation by parallelizing the encoding part in addition to the
previoulsy parallelized DWARF loading, support for 64-bit BTF enumeration
entries, signed BTF encoding of 'char', exclude/select DWARF loading
based on the language that generated the objects, etc.

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.24.tar.xz
https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign

Thanks a lot to all the contributors and distro packagers, you're on the
CC list, I appreciate a lot the work you put into these tools,

Best Regards,

BTF encoder:

- Add support to BTF_KIND_ENUM64 to represent enumeration entries with
more than 32 bits.

- Support multithreaded encoding, in addition to DWARF multithreaded
loading, speeding up the process.

Selected just like DWARF multithreaded loading, using the 'pahole -j'
option.

- Encode 'char' type as signed.

BTF Loader:

- Add support to BTF_KIND_ENUM64.

pahole:

- Introduce --lang and --lang_exclude to specify the language the
DWARF compile units were originated from to use or filter.

Use case is to exclude Rust compile units while aspects of the
DWARF generated for it get sorted out in a way that the kernel
BPF verifier don't refuse loading the BTF generated from them.

- Introduce --compile to generate compilable code in a similar fashion to:

bpftool btf dump file vmlinux format c > vmlinux.h

As with 'bpftool', this will notice type shadowing, i.e. multiple types
with the same name and will disambiguate by adding a suffix.

- Don't segfault when processing bogus files.


2022-08-24 15:01:59

by Luna Jernberg

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

https://forum.endeavouros.com/t/failed-to-start-load-kernel-modules-on-boot-after-system-update-nvidia/30584/17?u=sradjoker

On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:
>> The Nvidia driver breaks
>
> How? What are the messages?
>
> Here is a test on an Archlinux container:
>
> [perfbuilder@758097c04011 dwarves-1.24]$ pahole --version
> v1.24
> [perfbuilder@758097c04011 dwarves-1.24]$ cat /etc/os-release
> NAME="Arch Linux"
> PRETTY_NAME="Arch Linux"
> ID=arch
> BUILD_ID=rolling
> VERSION_ID=TEMPLATE_VERSION_ID
> ANSI_COLOR="38;2;23;147;209"
> HOME_URL="https://archlinux.org/"
> DOCUMENTATION_URL="https://wiki.archlinux.org/"
> SUPPORT_URL="https://bbs.archlinux.org/"
> BUG_REPORT_URL="https://bugs.archlinux.org/"
> LOGO=archlinux-logo
> [perfbuilder@758097c04011 dwarves-1.24]$ pahole list_head
> struct list_head {
> struct list_head * next; /* 0 8 */
> struct list_head * prev; /* 8 8 */
>
> /* size: 16, cachelines: 1, members: 2 */
> /* last cacheline: 16 bytes */
> };
> [perfbuilder@758097c04011 dwarves-1.24]$ pahole --sizes | sort -k2 -nr |
> head
> rcu_state 300608 7
> cmp_data 290904 1
> dec_data 274520 1
> cpu_entry_area 241664 0
> kvm 190016 6
> pglist_data 173440 6
> ZSTD_DCtx_s 161480 6
> saved_cmdlines_buffer 131104 1
> debug_store_buffers 131072 0
> hid_parser 110848 1
> [perfbuilder@758097c04011 dwarves-1.24]$
>
>> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
>> > Em Wed, Aug 24, 2022 at 03:23:29PM +0200, Luna Jernberg escreveu:
>> >> This package breaks on Arch Linux at the moment and if you are using
>> >> Arch
>> >> its recommended that you downgrade to 1.23
>> >
>> > Breaks in what sense? Can you please provide details?
>> >
>> > - Arnaldo
>> >
>> >> On Tue, Aug 23, 2022 at 1:59 AM Arnaldo Carvalho de Melo
>> >> <[email protected]>
>> >> wrote:
>> >>
>> >> > Hi,
>> >> >
>> >> > The v1.24 release of pahole and its friends is out, with
>> >> > faster
>> >> > BTF generation by parallelizing the encoding part in addition to the
>> >> > previoulsy parallelized DWARF loading, support for 64-bit BTF
>> >> > enumeration
>> >> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
>> >> > based on the language that generated the objects, etc.
>> >> >
>> >> > 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.24.tar.xz
>> >> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
>> >> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign
>> >> >
>> >> > Thanks a lot to all the contributors and distro packagers,
>> >> > you're
>> >> > on the
>> >> > CC list, I appreciate a lot the work you put into these tools,
>> >> >
>> >> > Best Regards,
>> >> >
>> >> > BTF encoder:
>> >> >
>> >> > - Add support to BTF_KIND_ENUM64 to represent enumeration entries
>> >> > with
>> >> > more than 32 bits.
>> >> >
>> >> > - Support multithreaded encoding, in addition to DWARF multithreaded
>> >> > loading, speeding up the process.
>> >> >
>> >> > Selected just like DWARF multithreaded loading, using the 'pahole
>> >> > -j'
>> >> > option.
>> >> >
>> >> > - Encode 'char' type as signed.
>> >> >
>> >> > BTF Loader:
>> >> >
>> >> > - Add support to BTF_KIND_ENUM64.
>> >> >
>> >> > pahole:
>> >> >
>> >> > - Introduce --lang and --lang_exclude to specify the language the
>> >> > DWARF compile units were originated from to use or filter.
>> >> >
>> >> > Use case is to exclude Rust compile units while aspects of the
>> >> > DWARF generated for it get sorted out in a way that the kernel
>> >> > BPF verifier don't refuse loading the BTF generated from them.
>> >> >
>> >> > - Introduce --compile to generate compilable code in a similar
>> >> > fashion
>> >> > to:
>> >> >
>> >> > bpftool btf dump file vmlinux format c > vmlinux.h
>> >> >
>> >> > As with 'bpftool', this will notice type shadowing, i.e. multiple
>> >> > types
>> >> > with the same name and will disambiguate by adding a suffix.
>> >> >
>> >> > - Don't segfault when processing bogus files.
>> >> >
>> >
>> > --
>> >
>> > - Arnaldo
>> >
>
> --
>
> - Arnaldo
>

2022-08-24 15:31:38

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Em Wed, Aug 24, 2022 at 03:23:29PM +0200, Luna Jernberg escreveu:
> This package breaks on Arch Linux at the moment and if you are using Arch
> its recommended that you downgrade to 1.23

Breaks in what sense? Can you please provide details?

- Arnaldo

> On Tue, Aug 23, 2022 at 1:59 AM Arnaldo Carvalho de Melo <[email protected]>
> wrote:
>
> > Hi,
> >
> > The v1.24 release of pahole and its friends is out, with faster
> > BTF generation by parallelizing the encoding part in addition to the
> > previoulsy parallelized DWARF loading, support for 64-bit BTF enumeration
> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
> > based on the language that generated the objects, etc.
> >
> > 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.24.tar.xz
> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign
> >
> > Thanks a lot to all the contributors and distro packagers, you're
> > on the
> > CC list, I appreciate a lot the work you put into these tools,
> >
> > Best Regards,
> >
> > BTF encoder:
> >
> > - Add support to BTF_KIND_ENUM64 to represent enumeration entries with
> > more than 32 bits.
> >
> > - Support multithreaded encoding, in addition to DWARF multithreaded
> > loading, speeding up the process.
> >
> > Selected just like DWARF multithreaded loading, using the 'pahole -j'
> > option.
> >
> > - Encode 'char' type as signed.
> >
> > BTF Loader:
> >
> > - Add support to BTF_KIND_ENUM64.
> >
> > pahole:
> >
> > - Introduce --lang and --lang_exclude to specify the language the
> > DWARF compile units were originated from to use or filter.
> >
> > Use case is to exclude Rust compile units while aspects of the
> > DWARF generated for it get sorted out in a way that the kernel
> > BPF verifier don't refuse loading the BTF generated from them.
> >
> > - Introduce --compile to generate compilable code in a similar fashion to:
> >
> > bpftool btf dump file vmlinux format c > vmlinux.h
> >
> > As with 'bpftool', this will notice type shadowing, i.e. multiple types
> > with the same name and will disambiguate by adding a suffix.
> >
> > - Don't segfault when processing bogus files.
> >

--

- Arnaldo

2022-08-24 15:34:00

by Luna Jernberg

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

The Nvidia driver breaks

On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> Em Wed, Aug 24, 2022 at 03:23:29PM +0200, Luna Jernberg escreveu:
>> This package breaks on Arch Linux at the moment and if you are using Arch
>> its recommended that you downgrade to 1.23
>
> Breaks in what sense? Can you please provide details?
>
> - Arnaldo
>
>> On Tue, Aug 23, 2022 at 1:59 AM Arnaldo Carvalho de Melo
>> <[email protected]>
>> wrote:
>>
>> > Hi,
>> >
>> > The v1.24 release of pahole and its friends is out, with faster
>> > BTF generation by parallelizing the encoding part in addition to the
>> > previoulsy parallelized DWARF loading, support for 64-bit BTF
>> > enumeration
>> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
>> > based on the language that generated the objects, etc.
>> >
>> > 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.24.tar.xz
>> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
>> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign
>> >
>> > Thanks a lot to all the contributors and distro packagers,
>> > you're
>> > on the
>> > CC list, I appreciate a lot the work you put into these tools,
>> >
>> > Best Regards,
>> >
>> > BTF encoder:
>> >
>> > - Add support to BTF_KIND_ENUM64 to represent enumeration entries with
>> > more than 32 bits.
>> >
>> > - Support multithreaded encoding, in addition to DWARF multithreaded
>> > loading, speeding up the process.
>> >
>> > Selected just like DWARF multithreaded loading, using the 'pahole -j'
>> > option.
>> >
>> > - Encode 'char' type as signed.
>> >
>> > BTF Loader:
>> >
>> > - Add support to BTF_KIND_ENUM64.
>> >
>> > pahole:
>> >
>> > - Introduce --lang and --lang_exclude to specify the language the
>> > DWARF compile units were originated from to use or filter.
>> >
>> > Use case is to exclude Rust compile units while aspects of the
>> > DWARF generated for it get sorted out in a way that the kernel
>> > BPF verifier don't refuse loading the BTF generated from them.
>> >
>> > - Introduce --compile to generate compilable code in a similar fashion
>> > to:
>> >
>> > bpftool btf dump file vmlinux format c > vmlinux.h
>> >
>> > As with 'bpftool', this will notice type shadowing, i.e. multiple
>> > types
>> > with the same name and will disambiguate by adding a suffix.
>> >
>> > - Don't segfault when processing bogus files.
>> >
>
> --
>
> - Arnaldo
>

2022-08-24 15:50:33

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:
> The Nvidia driver breaks

How? What are the messages?

Here is a test on an Archlinux container:

[perfbuilder@758097c04011 dwarves-1.24]$ pahole --version
v1.24
[perfbuilder@758097c04011 dwarves-1.24]$ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
VERSION_ID=TEMPLATE_VERSION_ID
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux-logo
[perfbuilder@758097c04011 dwarves-1.24]$ pahole list_head
struct list_head {
struct list_head * next; /* 0 8 */
struct list_head * prev; /* 8 8 */

/* size: 16, cachelines: 1, members: 2 */
/* last cacheline: 16 bytes */
};
[perfbuilder@758097c04011 dwarves-1.24]$ pahole --sizes | sort -k2 -nr | head
rcu_state 300608 7
cmp_data 290904 1
dec_data 274520 1
cpu_entry_area 241664 0
kvm 190016 6
pglist_data 173440 6
ZSTD_DCtx_s 161480 6
saved_cmdlines_buffer 131104 1
debug_store_buffers 131072 0
hid_parser 110848 1
[perfbuilder@758097c04011 dwarves-1.24]$

> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> > Em Wed, Aug 24, 2022 at 03:23:29PM +0200, Luna Jernberg escreveu:
> >> This package breaks on Arch Linux at the moment and if you are using Arch
> >> its recommended that you downgrade to 1.23
> >
> > Breaks in what sense? Can you please provide details?
> >
> > - Arnaldo
> >
> >> On Tue, Aug 23, 2022 at 1:59 AM Arnaldo Carvalho de Melo
> >> <[email protected]>
> >> wrote:
> >>
> >> > Hi,
> >> >
> >> > The v1.24 release of pahole and its friends is out, with faster
> >> > BTF generation by parallelizing the encoding part in addition to the
> >> > previoulsy parallelized DWARF loading, support for 64-bit BTF
> >> > enumeration
> >> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
> >> > based on the language that generated the objects, etc.
> >> >
> >> > 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.24.tar.xz
> >> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
> >> > https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign
> >> >
> >> > Thanks a lot to all the contributors and distro packagers,
> >> > you're
> >> > on the
> >> > CC list, I appreciate a lot the work you put into these tools,
> >> >
> >> > Best Regards,
> >> >
> >> > BTF encoder:
> >> >
> >> > - Add support to BTF_KIND_ENUM64 to represent enumeration entries with
> >> > more than 32 bits.
> >> >
> >> > - Support multithreaded encoding, in addition to DWARF multithreaded
> >> > loading, speeding up the process.
> >> >
> >> > Selected just like DWARF multithreaded loading, using the 'pahole -j'
> >> > option.
> >> >
> >> > - Encode 'char' type as signed.
> >> >
> >> > BTF Loader:
> >> >
> >> > - Add support to BTF_KIND_ENUM64.
> >> >
> >> > pahole:
> >> >
> >> > - Introduce --lang and --lang_exclude to specify the language the
> >> > DWARF compile units were originated from to use or filter.
> >> >
> >> > Use case is to exclude Rust compile units while aspects of the
> >> > DWARF generated for it get sorted out in a way that the kernel
> >> > BPF verifier don't refuse loading the BTF generated from them.
> >> >
> >> > - Introduce --compile to generate compilable code in a similar fashion
> >> > to:
> >> >
> >> > bpftool btf dump file vmlinux format c > vmlinux.h
> >> >
> >> > As with 'bpftool', this will notice type shadowing, i.e. multiple
> >> > types
> >> > with the same name and will disambiguate by adding a suffix.
> >> >
> >> > - Don't segfault when processing bogus files.
> >> >
> >
> > --
> >
> > - Arnaldo
> >

--

- Arnaldo

2022-08-24 16:57:43

by Nathan Chancellor

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Hi Arnaldo,

On Mon, Aug 22, 2022 at 08:28:42PM -0300, Arnaldo Carvalho de Melo wrote:
> Hi,
>
> The v1.24 release of pahole and its friends is out, with faster
> BTF generation by parallelizing the encoding part in addition to the
> previoulsy parallelized DWARF loading, support for 64-bit BTF enumeration
> entries, signed BTF encoding of 'char', exclude/select DWARF loading
> based on the language that generated the objects, etc.

<snip>

> - Introduce --lang and --lang_exclude to specify the language the
> DWARF compile units were originated from to use or filter.

This appears to break building pahole with older versions of libdw (?).
I build container images with older versions of compilers for easy
matrix testing and my gcc-5 and gcc-6 images (based off Ubuntu Xenial
and Debian Stretch respectively) fail to build.

$ podman run --rm -ti -v $TMP_FOLDER/dwarves-1.24.tar.xz:/tmp/dwarves-1.24.tar.xz:ro docker.io/ubuntu:xenial
# apt update
# apt install build-essential cmake libdw-dev libelf-dev xz-utils zlib1g-dev
# cd $(mktemp -d)
# tar -xJf /tmp/dwarves-1.24.tar.xz
# mkdir build
# cd build
# cmake -DBUILD_SHARED_LIBS=OFF -D__LIB=lib ../dwarves-1.24
# make -j$(nproc)
...
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error: 'DW_LANG_C_plus_plus_03' undeclared (first use in this function)
[DW_LANG_C_plus_plus_03] = "c++03",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error: 'DW_LANG_Dylan' undeclared (first use in this function)
[DW_LANG_Dylan] = "dylan",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error: 'DW_LANG_Julia' undeclared (first use in this function)
[DW_LANG_Julia] = "julia",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error: 'DW_LANG_Modula3' undeclared (first use in this function)
[DW_LANG_Modula3] = "modula3",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error: 'DW_LANG_OCaml' undeclared (first use in this function)
[DW_LANG_OCaml] = "ocaml",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error: 'DW_LANG_OpenCL' undeclared (first use in this function)
[DW_LANG_OpenCL] = "opencl",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error: 'DW_LANG_PLI' undeclared (first use in this function)
[DW_LANG_PLI] = "pli",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error: 'DW_LANG_RenderScript' undeclared (first use in this function)
[DW_LANG_RenderScript] = "renderscript",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error: 'DW_LANG_Rust' undeclared (first use in this function)
[DW_LANG_Rust] = "rust",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: note: (near initialization for 'languages')
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error: 'DW_LANG_Swift' undeclared (first use in this function)
[DW_LANG_Swift] = "swift",
^
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error: array index in initializer not of integer type
/tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: note: (near initialization for 'languages')
CMakeFiles/dwarves.dir/build.make:62: recipe for target 'CMakeFiles/dwarves.dir/dwarves.c.o' failed
...

If there is any additional information I can provide or patches I can
test, please let me know!

Cheers,
Nathan

2022-08-24 17:56:08

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Em Wed, Aug 24, 2022 at 09:24:49AM -0700, Nathan Chancellor escreveu:
> Hi Arnaldo,
>
> On Mon, Aug 22, 2022 at 08:28:42PM -0300, Arnaldo Carvalho de Melo wrote:
> > Hi,
> >
> > The v1.24 release of pahole and its friends is out, with faster
> > BTF generation by parallelizing the encoding part in addition to the
> > previoulsy parallelized DWARF loading, support for 64-bit BTF enumeration
> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
> > based on the language that generated the objects, etc.
>
> <snip>
>
> > - Introduce --lang and --lang_exclude to specify the language the
> > DWARF compile units were originated from to use or filter.
>
> This appears to break building pahole with older versions of libdw (?).
> I build container images with older versions of compilers for easy
> matrix testing and my gcc-5 and gcc-6 images (based off Ubuntu Xenial
> and Debian Stretch respectively) fail to build.

I do it for perf, should have done it for pahole :-\

So I'll have to come up with a patch that checks if those are defined
and if not, define it :-\ Ooops, its an enumeration :-\ I'll have to
check how to fix this, thanks for the report!

Will rebuild it with the containers I have to see if there are other
cases.

- Arnaldo

> $ podman run --rm -ti -v $TMP_FOLDER/dwarves-1.24.tar.xz:/tmp/dwarves-1.24.tar.xz:ro docker.io/ubuntu:xenial
> # apt update
> # apt install build-essential cmake libdw-dev libelf-dev xz-utils zlib1g-dev
> # cd $(mktemp -d)
> # tar -xJf /tmp/dwarves-1.24.tar.xz
> # mkdir build
> # cd build
> # cmake -DBUILD_SHARED_LIBS=OFF -D__LIB=lib ../dwarves-1.24
> # make -j$(nproc)
> ...
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c: In function 'lang__str2int':
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
> [DW_LANG_BLISS] = "bliss",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error: 'DW_LANG_C_plus_plus_03' undeclared (first use in this function)
> [DW_LANG_C_plus_plus_03] = "c++03",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error: 'DW_LANG_Dylan' undeclared (first use in this function)
> [DW_LANG_Dylan] = "dylan",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error: 'DW_LANG_Julia' undeclared (first use in this function)
> [DW_LANG_Julia] = "julia",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error: 'DW_LANG_Modula3' undeclared (first use in this function)
> [DW_LANG_Modula3] = "modula3",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error: 'DW_LANG_OCaml' undeclared (first use in this function)
> [DW_LANG_OCaml] = "ocaml",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error: 'DW_LANG_OpenCL' undeclared (first use in this function)
> [DW_LANG_OpenCL] = "opencl",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error: 'DW_LANG_PLI' undeclared (first use in this function)
> [DW_LANG_PLI] = "pli",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error: 'DW_LANG_RenderScript' undeclared (first use in this function)
> [DW_LANG_RenderScript] = "renderscript",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error: 'DW_LANG_Rust' undeclared (first use in this function)
> [DW_LANG_Rust] = "rust",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: note: (near initialization for 'languages')
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error: 'DW_LANG_Swift' undeclared (first use in this function)
> [DW_LANG_Swift] = "swift",
> ^
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error: array index in initializer not of integer type
> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: note: (near initialization for 'languages')
> CMakeFiles/dwarves.dir/build.make:62: recipe for target 'CMakeFiles/dwarves.dir/dwarves.c.o' failed
> ...
>
> If there is any additional information I can provide or patches I can
> test, please let me know!
>
> Cheers,
> Nathan

--

- Arnaldo

2022-08-24 18:00:22

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Em Wed, Aug 24, 2022 at 02:15:36PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Aug 24, 2022 at 09:24:49AM -0700, Nathan Chancellor escreveu:
> > Hi Arnaldo,
> >
> > On Mon, Aug 22, 2022 at 08:28:42PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Hi,
> > >
> > > The v1.24 release of pahole and its friends is out, with faster
> > > BTF generation by parallelizing the encoding part in addition to the
> > > previoulsy parallelized DWARF loading, support for 64-bit BTF enumeration
> > > entries, signed BTF encoding of 'char', exclude/select DWARF loading
> > > based on the language that generated the objects, etc.
> >
> > <snip>
> >
> > > - Introduce --lang and --lang_exclude to specify the language the
> > > DWARF compile units were originated from to use or filter.
> >
> > This appears to break building pahole with older versions of libdw (?).
> > I build container images with older versions of compilers for easy
> > matrix testing and my gcc-5 and gcc-6 images (based off Ubuntu Xenial
> > and Debian Stretch respectively) fail to build.
>
> I do it for perf, should have done it for pahole :-\
>
> So I'll have to come up with a patch that checks if those are defined
> and if not, define it :-\ Ooops, its an enumeration :-\ I'll have to
> check how to fix this, thanks for the report!
>
> Will rebuild it with the containers I have to see if there are other
> cases.

Yeah, recent enough distros are all building ok, I'll try and add some
fallback for old distros.

[perfbuilder@five ~]$ export BUILD_TARBALL=http://192.168.86.14/pahole/dwarves-1.24.tar.xz
[perfbuilder@five ~]$ export BUILD_CMD=buildcmd.sh
[perfbuilder@five ~]$ time dm
1 3.86 almalinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) , clang version 12.0.1 (Red Hat 12.0.1-4.module_el8.5.0+1025+93159d6c)
2 3.97 almalinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
3 1.06 alpine:3.9 : FAIL gcc version 8.3.0 (Alpine 8.3.0)
4 0.96 alpine:3.10 : FAIL gcc version 8.3.0 (Alpine 8.3.0)
5 0.86 alpine:3.11 : FAIL gcc version 9.3.0 (Alpine 9.3.0)
6 4.77 alpine:3.12 : Ok gcc (Alpine 9.3.0) 9.3.0 , Alpine clang version 10.0.0 (https://gitlab.alpinelinux.org/alpine/aports.git 7445adce501f8473efdb93b17b5eaf2f1445ed4c)
7 5.47 alpine:3.13 : Ok gcc (Alpine 10.2.1_pre1) 10.2.1 20201203 , Alpine clang version 10.0.1
8 5.57 alpine:3.14 : Ok gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424 , Alpine clang version 11.1.0
9 5.37 alpine:3.15 : Ok gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027 , Alpine clang version 12.0.1
10 5.67 alpine:3.16 : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 13.0.1
11 5.67 alpine:edge : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 14.0.6
12 2.96 alt:p8 : FAIL gcc version 5.3.1 20151207 (ALT p8 5.3.1-alt3.M80P.1) (GCC)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
/git/dwarves-1.24/dwarves.c:2093:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2093:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2100:3: error: 'DW_LANG_C_plus_plus_03' undeclared (first use in this function)
[DW_LANG_C_plus_plus_03] = "c++03",
^
/git/dwarves-1.24/dwarves.c:2100:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2100:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2105:3: error: 'DW_LANG_Dylan' undeclared (first use in this function)
[DW_LANG_Dylan] = "dylan",
^
/git/dwarves-1.24/dwarves.c:2105:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2105:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2114:3: error: 'DW_LANG_Julia' undeclared (first use in this function)
[DW_LANG_Julia] = "julia",
^
/git/dwarves-1.24/dwarves.c:2114:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2114:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2116:3: error: 'DW_LANG_Modula3' undeclared (first use in this function)
[DW_LANG_Modula3] = "modula3",
^
/git/dwarves-1.24/dwarves.c:2116:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2116:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2119:3: error: 'DW_LANG_OCaml' undeclared (first use in this function)
[DW_LANG_OCaml] = "ocaml",
^
/git/dwarves-1.24/dwarves.c:2119:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2119:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2120:3: error: 'DW_LANG_OpenCL' undeclared (first use in this function)
[DW_LANG_OpenCL] = "opencl",
^
/git/dwarves-1.24/dwarves.c:2120:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2120:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2124:3: error: 'DW_LANG_RenderScript' undeclared (first use in this function)
[DW_LANG_RenderScript] = "renderscript",
^
/git/dwarves-1.24/dwarves.c:2124:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2124:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2125:3: error: 'DW_LANG_Rust' undeclared (first use in this function)
[DW_LANG_Rust] = "rust",
^
/git/dwarves-1.24/dwarves.c:2125:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2125:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2126:3: error: 'DW_LANG_Swift' undeclared (first use in this function)
[DW_LANG_Swift] = "swift",
^
/git/dwarves-1.24/dwarves.c:2126:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2126:3: note: (near initialization for 'languages')
make[2]: *** [CMakeFiles/dwarves.dir/dwarves.c.o] Error 1
13 4.07 alt:p9 : Ok x86_64-alt-linux-gcc (GCC) 8.4.1 20200305 (ALT p9 8.4.1-alt0.p9.1) , clang version 10.0.0
14 4.17 alt:p10 : Ok x86_64-alt-linux-gcc (GCC) 10.3.1 20210703 (ALT Sisyphus 10.3.1-alt2) , clang version 11.0.1
15 4.17 alt:sisyphus : Ok x86_64-alt-linux-gcc (GCC) 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt1) , ALT Linux Team clang version 13.0.1
16 3.57 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-15) , clang version 11.1.0 (Amazon Linux 2 11.1.0-1.amzn2.0.2)
17 4.27 amazonlinux:devel : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.amzn2022)
18 4.87 archlinux:base : Ok gcc (GCC) 12.1.1 20220730 , clang version 14.0.6
19 3.77 centos:8 : Ok gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.1 (Red Hat 11.0.1-1.module_el8.4.0+966+2995ef20)
20 4.07 centos:stream : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-15) , clang version 14.0.0 (Red Hat 14.0.0-1.module_el8.7.0+1142+5343df54)
21 4.87 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 12.1.1 20220811 releases/gcc-12.1.0-341-g28a7b5df3b
22 3.36 debian:9 : FAIL gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
/git/dwarves-1.24/dwarves.c:2093:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2093:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2100:3: error: 'DW_LANG_C_plus_plus_03' undeclared (first use in this function)
[DW_LANG_C_plus_plus_03] = "c++03",
^~~~~~~~~~~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2100:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2100:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2105:3: error: 'DW_LANG_Dylan' undeclared (first use in this function)
[DW_LANG_Dylan] = "dylan",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2105:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2105:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2114:3: error: 'DW_LANG_Julia' undeclared (first use in this function)
[DW_LANG_Julia] = "julia",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2114:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2114:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2116:3: error: 'DW_LANG_Modula3' undeclared (first use in this function)
[DW_LANG_Modula3] = "modula3",
^~~~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2116:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2116:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2119:3: error: 'DW_LANG_OCaml' undeclared (first use in this function)
[DW_LANG_OCaml] = "ocaml",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2119:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2119:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2120:3: error: 'DW_LANG_OpenCL' undeclared (first use in this function)
[DW_LANG_OpenCL] = "opencl",
^~~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2120:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2120:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2124:3: error: 'DW_LANG_RenderScript' undeclared (first use in this function)
[DW_LANG_RenderScript] = "renderscript",
^~~~~~~~~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2124:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2124:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2125:3: error: 'DW_LANG_Rust' undeclared (first use in this function)
[DW_LANG_Rust] = "rust",
^~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2125:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2125:3: note: (near initialization for 'languages')
/git/dwarves-1.24/dwarves.c:2126:3: error: 'DW_LANG_Swift' undeclared (first use in this function)
[DW_LANG_Swift] = "swift",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2126:3: error: array index in initializer not of integer type
/git/dwarves-1.24/dwarves.c:2126:3: note: (near initialization for 'languages')
CMakeFiles/dwarves.dir/build.make:62: recipe for target 'CMakeFiles/dwarves.dir/dwarves.c.o' failed
make[2]: *** [CMakeFiles/dwarves.dir/dwarves.c.o] Error 1
23 4.08 debian:10 : Ok gcc (Debian 8.3.0-6) 8.3.0 , Debian clang version 11.0.1-2~deb10u1
24 3.97 debian:11 : Ok gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 11.0.1-2
25 4.77 debian:experimental : Ok gcc (Debian 12.1.0-7) 12.1.0 , Debian clang version 14.0.6-2
26 3.06 fedora:22 : FAIL gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
27 3.06 fedora:24 : FAIL gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
28 3.17 fedora:25 : FAIL gcc version 6.4.1 20170727 (Red Hat 6.4.1-1) (GCC)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
29 3.87 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
30 3.57 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
31 3.87 fedora:28 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
32 3.97 fedora:29 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
33 3.77 fedora:30 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
34 3.97 fedora:31 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) , clang version 9.0.1 (Fedora 9.0.1-4.fc31)
35 4.07 fedora:32 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 10.0.1 (Fedora 10.0.1-3.fc32)
36 3.97 fedora:33 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 11.0.0 (Fedora 11.0.0-3.fc33)
37 4.17 fedora:34 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.fc34)
38 3.97 fedora:35 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 13.0.0 (Fedora 13.0.0-3.fc35)
39 4.27 fedora:36 : Ok gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1) , clang version 14.0.0 (Fedora 14.0.0-1.fc36)
40 4.57 fedora:37 : Ok gcc (GCC) 12.1.1 20220628 (Red Hat 12.1.1-3) , clang version 14.0.5 (Fedora 14.0.5-6.fc37)
41 4.67 fedora:38 : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
42 4.56 fedora:rawhide : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
43 4.17 gentoo-stage3:latest : Ok gcc (Gentoo 11.2.0 p1) 11.2.0 , clang version 13.0.0
44 4.47 manjaro:base : Ok gcc (GCC) 11.1.0 , clang version 13.0.0
45 3.26 opensuse:15.0 : FAIL gcc version 7.4.1 20190905 [gcc-7-branch revision 275407] (SUSE Linux)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function); did you mean 'DW_LANG_PLI'?
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
DW_LANG_PLI
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
46 3.17 opensuse:15.1 : FAIL gcc version 7.5.0 (SUSE Linux)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function); did you mean 'DW_LANG_PLI'?
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
DW_LANG_PLI
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
47 3.16 opensuse:15.2 : FAIL gcc version 7.5.0 (SUSE Linux)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function); did you mean 'DW_LANG_PLI'?
[DW_LANG_BLISS] = "bliss",
^~~~~~~~~~~~~
DW_LANG_PLI
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
48 3.77 opensuse:15.3 : Ok gcc (SUSE Linux) 7.5.0 , clang version 11.0.1
49 3.96 opensuse:15.4 : Ok gcc (SUSE Linux) 7.5.0 , clang version 13.0.1
50 4.57 opensuse:tumbleweed : Ok gcc (SUSE Linux) 12.1.1 20220629 [revision 7811663964aa7e31c3939b859bbfa2e16919639f] , clang version 14.0.6
51 3.87 oraclelinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4.0.1) , clang version 12.0.1 (Red Hat 12.0.1-4.0.1.module+el8.5.0+20428+2b4ecd47)
52 3.97 oraclelinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9.4.0.2) , clang version 13.0.1 (Red Hat 13.0.1-1.0.1.el9)
53 3.97 rockylinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-10) , clang version 13.0.1 (Red Hat 13.0.1-2.module+el8.6.0+987+d36ea6a1)
54 4.17 rockylinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
55 3.06 ubuntu:16.04 : FAIL gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
/git/dwarves-1.24/dwarves.c: In function 'lang__str2int':
/git/dwarves-1.24/dwarves.c:2093:3: error: 'DW_LANG_BLISS' undeclared (first use in this function)
[DW_LANG_BLISS] = "bliss",
^
/git/dwarves-1.24/dwarves.c:2093:3: note: each undeclared identifier is reported only once for each function it appears in
56 3.77 ubuntu:18.04 : Ok gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
57 4.27 ubuntu:20.04 : Ok gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
58 4.17 ubuntu:21.04 : Ok gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0 , Ubuntu clang version 12.0.0-3ubuntu1~21.04.2
59 4.07 ubuntu:21.10 : Ok gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0 , Ubuntu clang version 13.0.0-2
60 4.17 ubuntu:22.04 : Ok gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0 , Ubuntu clang version 14.0.0-1ubuntu1
61 4.37 ubuntu:22.10 : Ok gcc (Ubuntu 11.3.0-5ubuntu1) 11.3.0 , Ubuntu clang version 14.0.6-2

2022-08-24 18:24:13

by Luna Jernberg

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

Great :)

On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> Em Wed, Aug 24, 2022 at 09:24:49AM -0700, Nathan Chancellor escreveu:
>> Hi Arnaldo,
>>
>> On Mon, Aug 22, 2022 at 08:28:42PM -0300, Arnaldo Carvalho de Melo wrote:
>> > Hi,
>> >
>> > The v1.24 release of pahole and its friends is out, with faster
>> > BTF generation by parallelizing the encoding part in addition to the
>> > previoulsy parallelized DWARF loading, support for 64-bit BTF
>> > enumeration
>> > entries, signed BTF encoding of 'char', exclude/select DWARF loading
>> > based on the language that generated the objects, etc.
>>
>> <snip>
>>
>> > - Introduce --lang and --lang_exclude to specify the language the
>> > DWARF compile units were originated from to use or filter.
>>
>> This appears to break building pahole with older versions of libdw (?).
>> I build container images with older versions of compilers for easy
>> matrix testing and my gcc-5 and gcc-6 images (based off Ubuntu Xenial
>> and Debian Stretch respectively) fail to build.
>
> I do it for perf, should have done it for pahole :-\
>
> So I'll have to come up with a patch that checks if those are defined
> and if not, define it :-\ Ooops, its an enumeration :-\ I'll have to
> check how to fix this, thanks for the report!
>
> Will rebuild it with the containers I have to see if there are other
> cases.
>
> - Arnaldo
>
>> $ podman run --rm -ti -v
>> $TMP_FOLDER/dwarves-1.24.tar.xz:/tmp/dwarves-1.24.tar.xz:ro
>> docker.io/ubuntu:xenial
>> # apt update
>> # apt install build-essential cmake libdw-dev libelf-dev xz-utils
>> zlib1g-dev
>> # cd $(mktemp -d)
>> # tar -xJf /tmp/dwarves-1.24.tar.xz
>> # mkdir build
>> # cd build
>> # cmake -DBUILD_SHARED_LIBS=OFF -D__LIB=lib ../dwarves-1.24
>> # make -j$(nproc)
>> ...
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c: In function
>> 'lang__str2int':
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error:
>> 'DW_LANG_BLISS' undeclared (first use in this function)
>> [DW_LANG_BLISS] = "bliss",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: each
>> undeclared identifier is reported only once for each function it appears
>> in
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2093:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error:
>> 'DW_LANG_C_plus_plus_03' undeclared (first use in this function)
>> [DW_LANG_C_plus_plus_03] = "c++03",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2100:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error:
>> 'DW_LANG_Dylan' undeclared (first use in this function)
>> [DW_LANG_Dylan] = "dylan",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2105:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error:
>> 'DW_LANG_Julia' undeclared (first use in this function)
>> [DW_LANG_Julia] = "julia",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2114:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error:
>> 'DW_LANG_Modula3' undeclared (first use in this function)
>> [DW_LANG_Modula3] = "modula3",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2116:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error:
>> 'DW_LANG_OCaml' undeclared (first use in this function)
>> [DW_LANG_OCaml] = "ocaml",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2119:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error:
>> 'DW_LANG_OpenCL' undeclared (first use in this function)
>> [DW_LANG_OpenCL] = "opencl",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2120:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error:
>> 'DW_LANG_PLI' undeclared (first use in this function)
>> [DW_LANG_PLI] = "pli",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2122:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error:
>> 'DW_LANG_RenderScript' undeclared (first use in this function)
>> [DW_LANG_RenderScript] = "renderscript",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2124:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error:
>> 'DW_LANG_Rust' undeclared (first use in this function)
>> [DW_LANG_Rust] = "rust",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2125:3: note: (near
>> initialization for 'languages')
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error:
>> 'DW_LANG_Swift' undeclared (first use in this function)
>> [DW_LANG_Swift] = "swift",
>> ^
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: error: array index
>> in initializer not of integer type
>> /tmp/tmp.pQ2GsHbGAx/dwarves-1.24/dwarves.c:2126:3: note: (near
>> initialization for 'languages')
>> CMakeFiles/dwarves.dir/build.make:62: recipe for target
>> 'CMakeFiles/dwarves.dir/dwarves.c.o' failed
>> ...
>>
>> If there is any additional information I can provide or patches I can
>> test, please let me know!
>>
>> Cheers,
>> Nathan
>
> --
>
> - Arnaldo
>

Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

On 8/24/22 11:38, Luna Jernberg wrote:
> https://forum.endeavouros.com/t/failed-to-start-load-kernel-modules-on-boot-after-system-update-nvidia/30584/17?u=sradjoker
>
> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
>> Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:
>>> The Nvidia driver breaks
>>
>> How? What are the messages?
>>
>> Here is a test on an Archlinux container:
>>
>> [perfbuilder@758097c04011 dwarves-1.24]$ pahole --version
>> v1.24
>> [perfbuilder@758097c04011 dwarves-1.24]$ cat /etc/os-release
>> NAME="Arch Linux"
>> PRETTY_NAME="Arch Linux"
>> ID=arch
>> BUILD_ID=rolling
>> VERSION_ID=TEMPLATE_VERSION_ID
>> ANSI_COLOR="38;2;23;147;209"
>> HOME_URL="https://archlinux.org/"
>> DOCUMENTATION_URL="https://wiki.archlinux.org/"
>> SUPPORT_URL="https://bbs.archlinux.org/"
>> BUG_REPORT_URL="https://bugs.archlinux.org/"
>> LOGO=archlinux-logo
>> [perfbuilder@758097c04011 dwarves-1.24]$ pahole list_head
>> struct list_head {
>> struct list_head * next; /* 0 8 */
>> struct list_head * prev; /* 8 8 */
>>
>> /* size: 16, cachelines: 1, members: 2 */
>> /* last cacheline: 16 bytes */
>> };
>> [perfbuilder@758097c04011 dwarves-1.24]$ pahole --sizes | sort -k2 -nr |
>> head
>> rcu_state 300608 7
>> cmp_data 290904 1
>> dec_data 274520 1
>> cpu_entry_area 241664 0
>> kvm 190016 6
>> pglist_data 173440 6
>> ZSTD_DCtx_s 161480 6
>> saved_cmdlines_buffer 131104 1
>> debug_store_buffers 131072 0
>> hid_parser 110848 1
>> [perfbuilder@758097c04011 dwarves-1.24]$
>>
>>> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
>>>> Em Wed, Aug 24, 2022 at 03:23:29PM +0200, Luna Jernberg escreveu:
>>>>> This package breaks on Arch Linux at the moment and if you are using
>>>>> Arch
>>>>> its recommended that you downgrade to 1.23
>>>>
>>>> Breaks in what sense? Can you please provide details?
>>>>
>>>> - Arnaldo
>>>>
>>>>> On Tue, Aug 23, 2022 at 1:59 AM Arnaldo Carvalho de Melo
>>>>> <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> The v1.24 release of pahole and its friends is out, with
>>>>>> faster
>>>>>> BTF generation by parallelizing the encoding part in addition to the
>>>>>> previoulsy parallelized DWARF loading, support for 64-bit BTF
>>>>>> enumeration
>>>>>> entries, signed BTF encoding of 'char', exclude/select DWARF loading
>>>>>> based on the language that generated the objects, etc.
>>>>>>
>>>>>> 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.24.tar.xz
>>>>>> https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.bz2
>>>>>> https://fedorapeople.org/~acme/dwarves/dwarves-1.24.tar.sign
>>>>>>
>>>>>> Thanks a lot to all the contributors and distro packagers,
>>>>>> you're
>>>>>> on the
>>>>>> CC list, I appreciate a lot the work you put into these tools,
>>>>>>
>>>>>> Best Regards,
>>>>>>
>>>>>> BTF encoder:
>>>>>>
>>>>>> - Add support to BTF_KIND_ENUM64 to represent enumeration entries
>>>>>> with
>>>>>> more than 32 bits.
>>>>>>
>>>>>> - Support multithreaded encoding, in addition to DWARF multithreaded
>>>>>> loading, speeding up the process.
>>>>>>
>>>>>> Selected just like DWARF multithreaded loading, using the 'pahole
>>>>>> -j'
>>>>>> option.
>>>>>>
>>>>>> - Encode 'char' type as signed.
>>>>>>
>>>>>> BTF Loader:
>>>>>>
>>>>>> - Add support to BTF_KIND_ENUM64.
>>>>>>
>>>>>> pahole:
>>>>>>
>>>>>> - Introduce --lang and --lang_exclude to specify the language the
>>>>>> DWARF compile units were originated from to use or filter.
>>>>>>
>>>>>> Use case is to exclude Rust compile units while aspects of the
>>>>>> DWARF generated for it get sorted out in a way that the kernel
>>>>>> BPF verifier don't refuse loading the BTF generated from them.
>>>>>>
>>>>>> - Introduce --compile to generate compilable code in a similar
>>>>>> fashion
>>>>>> to:
>>>>>>
>>>>>> bpftool btf dump file vmlinux format c > vmlinux.h
>>>>>>
>>>>>> As with 'bpftool', this will notice type shadowing, i.e. multiple
>>>>>> types
>>>>>> with the same name and will disambiguate by adding a suffix.
>>>>>>
>>>>>> - Don't segfault when processing bogus files.
>>>>>>
>>>>
>>>> --
>>>>
>>>> - Arnaldo
>>>>
>>
>> --
>>
>> - Arnaldo
>>

Can you try a build of the kernel or the by passing the
--skip_encoding_btf_enum64 to scripts/pahole-flags.sh?

Here's a patch for either in tree scripts/pahole-flags.sh or
/usr/lib/modules/5.19.3-arch1-1/build/scripts/pahole-flags.sh

diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
index 0d99ef17e4a528..1f1f1d397c399a 100755
--- a/scripts/pahole-flags.sh
+++ b/scripts/pahole-flags.sh
@@ -19,5 +19,9 @@ fi
if [ "${pahole_ver}" -ge "122" ]; then
extra_paholeopt="${extra_paholeopt} -j"
fi
+if [ "${pahole_ver}" -ge "124" ]; then
+ # see PAHOLE_HAS_LANG_EXCLUDE
+ extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64"
+fi

echo ${extra_paholeopt}

- Martin Rodriguez Reboredo

2022-08-25 13:37:18

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [PATCH] core: Conditionally define language encodings entries)

Em Wed, Aug 24, 2022 at 02:55:03PM -0300, Arnaldo Carvalho de Melo escreveu:
> Yeah, recent enough distros are all building ok, I'll try and add some
> fallback for old distros.
>

Ok, now it builds everywhere:

[perfbuilder@five ~]$ export BUILD_TARBALL=http://192.168.86.14/pahole/dwarves-1.25.tar.xz
[perfbuilder@five ~]$ export BUILD_CMD=buildcmd.sh
[perfbuilder@five ~]$ dm -X
1 4.07 almalinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) , clang version 12.0.1 (Red Hat 12.0.1-4.module_el8.5.0+1025+93159d6c)
2 4.07 almalinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
3 4.87 alpine:3.12 : Ok gcc (Alpine 9.3.0) 9.3.0 , Alpine clang version 10.0.0 (https://gitlab.alpinelinux.org/alpine/aports.git 7445adce501f8473efdb93b17b5eaf2f1445ed4c)
4 5.47 alpine:3.13 : Ok gcc (Alpine 10.2.1_pre1) 10.2.1 20201203 , Alpine clang version 10.0.1
5 5.47 alpine:3.14 : Ok gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424 , Alpine clang version 11.1.0
6 5.27 alpine:3.15 : Ok gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027 , Alpine clang version 12.0.1
7 5.87 alpine:3.16 : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 13.0.1
8 5.68 alpine:edge : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 14.0.6
9 3.27 alt:p8 : Ok x86_64-alt-linux-gcc (GCC) 5.3.1 20151207 (ALT p8 5.3.1-alt3.M80P.1)
10 3.77 alt:p9 : Ok x86_64-alt-linux-gcc (GCC) 8.4.1 20200305 (ALT p9 8.4.1-alt0.p9.1) , clang version 10.0.0
11 4.17 alt:p10 : Ok x86_64-alt-linux-gcc (GCC) 10.3.1 20210703 (ALT Sisyphus 10.3.1-alt2) , clang version 11.0.1
12 4.48 alt:sisyphus : Ok x86_64-alt-linux-gcc (GCC) 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt1) , ALT Linux Team clang version 13.0.1
13 3.77 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-15) , clang version 11.1.0 (Amazon Linux 2 11.1.0-1.amzn2.0.2)
14 4.07 amazonlinux:devel : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.amzn2022)
15 5.38 archlinux:base : Ok gcc (GCC) 12.1.1 20220730 , clang version 14.0.6
16 3.97 centos:8 : Ok gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.1 (Red Hat 11.0.1-1.module_el8.4.0+966+2995ef20)
17 4.17 centos:stream : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-15) , clang version 14.0.0 (Red Hat 14.0.0-1.module_el8.7.0+1142+5343df54)
18 4.67 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 12.1.1 20220811 releases/gcc-12.1.0-341-g28a7b5df3b
19 4.07 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
20 4.27 debian:10 : Ok gcc (Debian 8.3.0-6) 8.3.0 , Debian clang version 11.0.1-2~deb10u1
21 4.07 debian:11 : Ok gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 11.0.1-2
22 4.57 debian:experimental : Ok gcc (Debian 12.1.0-7) 12.1.0 , Debian clang version 14.0.6-2
23 3.57 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
24 4.07 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
25 3.87 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
26 4.07 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
27 3.67 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
28 3.98 fedora:28 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
29 3.87 fedora:29 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
30 4.77 fedora:30 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
31 4.07 fedora:31 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) , clang version 9.0.1 (Fedora 9.0.1-4.fc31)
32 4.07 fedora:32 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 10.0.1 (Fedora 10.0.1-3.fc32)
33 3.97 fedora:33 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 11.0.0 (Fedora 11.0.0-3.fc33)
34 4.37 fedora:34 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.fc34)
35 4.07 fedora:35 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 13.0.0 (Fedora 13.0.0-3.fc35)
36 4.37 fedora:36 : Ok gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1) , clang version 14.0.0 (Fedora 14.0.0-1.fc36)
37 4.77 fedora:37 : Ok gcc (GCC) 12.1.1 20220628 (Red Hat 12.1.1-3) , clang version 14.0.5 (Fedora 14.0.5-6.fc37)
38 7.77 fedora:38 : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
39 4.97 fedora:rawhide : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
40 4.37 gentoo-stage3:latest : Ok gcc (Gentoo 11.2.0 p1) 11.2.0 , clang version 13.0.0
41 4.77 manjaro:base : Ok gcc (GCC) 11.1.0 , clang version 13.0.0
42 3.87 opensuse:15.0 : Ok gcc (SUSE Linux) 7.4.1 20190905 [gcc-7-branch revision 275407]
43 3.57 opensuse:15.1 : Ok gcc (SUSE Linux) 7.5.0
44 3.87 opensuse:15.2 : Ok gcc (SUSE Linux) 7.5.0 , clang version 9.0.1
45 5.31 opensuse:15.3 : Ok gcc (SUSE Linux) 7.5.0 , clang version 11.0.1
46 3.77 opensuse:15.4 : Ok gcc (SUSE Linux) 7.5.0 , clang version 13.0.1
47 4.68 opensuse:tumbleweed : Ok gcc (SUSE Linux) 12.1.1 20220629 [revision 7811663964aa7e31c3939b859bbfa2e16919639f] , clang version 14.0.6
48 4.27 oraclelinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4.0.1) , clang version 12.0.1 (Red Hat 12.0.1-4.0.1.module+el8.5.0+20428+2b4ecd47)
49 3.96 oraclelinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9.4.0.2) , clang version 13.0.1 (Red Hat 13.0.1-1.0.1.el9)
50 3.87 rockylinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-10) , clang version 13.0.1 (Red Hat 13.0.1-2.module+el8.6.0+987+d36ea6a1)
51 4.07 rockylinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
52 3.47 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
53 3.57 ubuntu:18.04 : Ok gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
54 4.28 ubuntu:20.04 : Ok gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
55 4.17 ubuntu:21.04 : Ok gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0 , Ubuntu clang version 12.0.0-3ubuntu1~21.04.2
56 3.97 ubuntu:21.10 : Ok gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0 , Ubuntu clang version 13.0.0-2
57 4.27 ubuntu:22.04 : Ok gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0 , Ubuntu clang version 14.0.0-1ubuntu1
58 4.37 ubuntu:22.10 : Ok gcc (Ubuntu 11.3.0-5ubuntu1) 11.3.0 , Ubuntu clang version 14.0.6-2
[perfbuilder@five ~]$

With this patch:

From c3eac0a3591a36f6590691a21434241d67a3fa89 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 25 Aug 2022 10:01:49 -0300
Subject: [PATCH 1/1] core: Conditionally define language encodings

It it defined in an enumeration on dwarf.h, so doing it here as defines
doesn't clash with it and makes this file to build with older distros.

Reported-by: Nathan Chancellor <[email protected]>
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
dwarves.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 112 insertions(+)

diff --git a/dwarves.c b/dwarves.c
index db1dcf5904bc98fe..394a8155325484fc 100644
--- a/dwarves.c
+++ b/dwarves.c
@@ -2085,6 +2085,118 @@ int cus__load_file(struct cus *cus, struct conf_load *conf,

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))

+#ifndef DW_LANG_C89
+#define DW_LANG_C89 0x0001
+#endif
+#ifndef DW_LANG_C
+#define DW_LANG_C 0x0002
+#endif
+#ifndef DW_LANG_Ada83
+#define DW_LANG_Ada83 0x0003
+#endif
+#ifndef DW_LANG_C_plus_plus
+#define DW_LANG_C_plus_plus 0x0004
+#endif
+#ifndef DW_LANG_Cobol74
+#define DW_LANG_Cobol74 0x0005
+#endif
+#ifndef DW_LANG_Cobol85
+#define DW_LANG_Cobol85 0x0006
+#endif
+#ifndef DW_LANG_Fortran77
+#define DW_LANG_Fortran77 0x0007
+#endif
+#ifndef DW_LANG_Fortran90
+#define DW_LANG_Fortran90 0x0008
+#endif
+#ifndef DW_LANG_Pascal83
+#define DW_LANG_Pascal83 0x0009
+#endif
+#ifndef DW_LANG_Modula2
+#define DW_LANG_Modula2 0x000a
+#endif
+#ifndef DW_LANG_Java
+#define DW_LANG_Java 0x000b
+#endif
+#ifndef DW_LANG_C99
+#define DW_LANG_C99 0x000c
+#endif
+#ifndef DW_LANG_Ada95
+#define DW_LANG_Ada95 0x000d
+#endif
+#ifndef DW_LANG_Fortran95
+#define DW_LANG_Fortran95 0x000e
+#endif
+#ifndef DW_LANG_PLI
+#define DW_LANG_PLI 0x000f
+#endif
+#ifndef DW_LANG_ObjC
+#define DW_LANG_ObjC 0x0010
+#endif
+#ifndef DW_LANG_ObjC_plus_plus
+#define DW_LANG_ObjC_plus_plus 0x0011
+#endif
+#ifndef DW_LANG_UPC
+#define DW_LANG_UPC 0x0012
+#endif
+#ifndef DW_LANG_D
+#define DW_LANG_D 0x0013
+#endif
+#ifndef DW_LANG_Python
+#define DW_LANG_Python 0x0014
+#endif
+#ifndef DW_LANG_OpenCL
+#define DW_LANG_OpenCL 0x0015
+#endif
+#ifndef DW_LANG_Go
+#define DW_LANG_Go 0x0016
+#endif
+#ifndef DW_LANG_Modula3
+#define DW_LANG_Modula3 0x0017
+#endif
+#ifndef DW_LANG_Haskell
+#define DW_LANG_Haskell 0x0018
+#endif
+#ifndef DW_LANG_C_plus_plus_03
+#define DW_LANG_C_plus_plus_03 0x0019
+#endif
+#ifndef DW_LANG_C_plus_plus_11
+#define DW_LANG_C_plus_plus_11 0x001a
+#endif
+#ifndef DW_LANG_OCaml
+#define DW_LANG_OCaml 0x001b
+#endif
+#ifndef DW_LANG_Rust
+#define DW_LANG_Rust 0x001c
+#endif
+#ifndef DW_LANG_C11
+#define DW_LANG_C11 0x001d
+#endif
+#ifndef DW_LANG_Swift
+#define DW_LANG_Swift 0x001e
+#endif
+#ifndef DW_LANG_Julia
+#define DW_LANG_Julia 0x001f
+#endif
+#ifndef DW_LANG_Dylan
+#define DW_LANG_Dylan 0x0020
+#endif
+#ifndef DW_LANG_C_plus_plus_14
+#define DW_LANG_C_plus_plus_14 0x0021
+#endif
+#ifndef DW_LANG_Fortran03
+#define DW_LANG_Fortran03 0x0022
+#endif
+#ifndef DW_LANG_Fortran08
+#define DW_LANG_Fortran08 0x0023
+#endif
+#ifndef DW_LANG_RenderScript
+#define DW_LANG_RenderScript 0x0024
+#endif
+#ifndef DW_LANG_BLISS
+#define DW_LANG_BLISS 0x0025
+#endif
+
int lang__str2int(const char *lang)
{
static const char *languages[] = {
--
2.37.2

Subject: Re: [PATCH] core: Conditionally define language encodings entries)

On 8/25/22 10:19, Arnaldo Carvalho de Melo wrote:
> Em Wed, Aug 24, 2022 at 02:55:03PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Yeah, recent enough distros are all building ok, I'll try and add some
>> fallback for old distros.
>>
>
> Ok, now it builds everywhere:
>
> [...]
>
> With this patch:
>
> [...]

Builds on Arch Linux on master.

Acked-by: Martin Rodriguez Reboredo

- Martin Rodriguez Reboredo

2022-08-25 16:29:21

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH] core: Conditionally define language encodings entries)

On Thu, Aug 25, 2022 at 10:19:08AM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Aug 24, 2022 at 02:55:03PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Yeah, recent enough distros are all building ok, I'll try and add some
> > fallback for old distros.
> >
>
> Ok, now it builds everywhere:
>
> [perfbuilder@five ~]$ export BUILD_TARBALL=http://192.168.86.14/pahole/dwarves-1.25.tar.xz
> [perfbuilder@five ~]$ export BUILD_CMD=buildcmd.sh
> [perfbuilder@five ~]$ dm -X
> 1 4.07 almalinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) , clang version 12.0.1 (Red Hat 12.0.1-4.module_el8.5.0+1025+93159d6c)
> 2 4.07 almalinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
> 3 4.87 alpine:3.12 : Ok gcc (Alpine 9.3.0) 9.3.0 , Alpine clang version 10.0.0 (https://gitlab.alpinelinux.org/alpine/aports.git 7445adce501f8473efdb93b17b5eaf2f1445ed4c)
> 4 5.47 alpine:3.13 : Ok gcc (Alpine 10.2.1_pre1) 10.2.1 20201203 , Alpine clang version 10.0.1
> 5 5.47 alpine:3.14 : Ok gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424 , Alpine clang version 11.1.0
> 6 5.27 alpine:3.15 : Ok gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027 , Alpine clang version 12.0.1
> 7 5.87 alpine:3.16 : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 13.0.1
> 8 5.68 alpine:edge : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 14.0.6
> 9 3.27 alt:p8 : Ok x86_64-alt-linux-gcc (GCC) 5.3.1 20151207 (ALT p8 5.3.1-alt3.M80P.1)
> 10 3.77 alt:p9 : Ok x86_64-alt-linux-gcc (GCC) 8.4.1 20200305 (ALT p9 8.4.1-alt0.p9.1) , clang version 10.0.0
> 11 4.17 alt:p10 : Ok x86_64-alt-linux-gcc (GCC) 10.3.1 20210703 (ALT Sisyphus 10.3.1-alt2) , clang version 11.0.1
> 12 4.48 alt:sisyphus : Ok x86_64-alt-linux-gcc (GCC) 12.1.1 20220518 (ALT Sisyphus 12.1.1-alt1) , ALT Linux Team clang version 13.0.1
> 13 3.77 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-15) , clang version 11.1.0 (Amazon Linux 2 11.1.0-1.amzn2.0.2)
> 14 4.07 amazonlinux:devel : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.amzn2022)
> 15 5.38 archlinux:base : Ok gcc (GCC) 12.1.1 20220730 , clang version 14.0.6
> 16 3.97 centos:8 : Ok gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1) , clang version 11.0.1 (Red Hat 11.0.1-1.module_el8.4.0+966+2995ef20)
> 17 4.17 centos:stream : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-15) , clang version 14.0.0 (Red Hat 14.0.0-1.module_el8.7.0+1142+5343df54)
> 18 4.67 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 12.1.1 20220811 releases/gcc-12.1.0-341-g28a7b5df3b
> 19 4.07 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
> 20 4.27 debian:10 : Ok gcc (Debian 8.3.0-6) 8.3.0 , Debian clang version 11.0.1-2~deb10u1
> 21 4.07 debian:11 : Ok gcc (Debian 10.2.1-6) 10.2.1 20210110 , Debian clang version 11.0.1-2
> 22 4.57 debian:experimental : Ok gcc (Debian 12.1.0-7) 12.1.0 , Debian clang version 14.0.6-2
> 23 3.57 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
> 24 4.07 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
> 25 3.87 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
> 26 4.07 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
> 27 3.67 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
> 28 3.98 fedora:28 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
> 29 3.87 fedora:29 : Ok gcc (GCC) 8.3.1 20190223 (Red Hat 8.3.1-2)
> 30 4.77 fedora:30 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
> 31 4.07 fedora:31 : Ok gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) , clang version 9.0.1 (Fedora 9.0.1-4.fc31)
> 32 4.07 fedora:32 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 10.0.1 (Fedora 10.0.1-3.fc32)
> 33 3.97 fedora:33 : Ok gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) , clang version 11.0.0 (Fedora 11.0.0-3.fc33)
> 34 4.37 fedora:34 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 12.0.1 (Fedora 12.0.1-1.fc34)
> 35 4.07 fedora:35 : Ok gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2) , clang version 13.0.0 (Fedora 13.0.0-3.fc35)
> 36 4.37 fedora:36 : Ok gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1) , clang version 14.0.0 (Fedora 14.0.0-1.fc36)
> 37 4.77 fedora:37 : Ok gcc (GCC) 12.1.1 20220628 (Red Hat 12.1.1-3) , clang version 14.0.5 (Fedora 14.0.5-6.fc37)
> 38 7.77 fedora:38 : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
> 39 4.97 fedora:rawhide : Ok gcc (GCC) 12.1.1 20220810 (Red Hat 12.1.1-4) , clang version 14.0.5 (Fedora 14.0.5-6.fc38)
> 40 4.37 gentoo-stage3:latest : Ok gcc (Gentoo 11.2.0 p1) 11.2.0 , clang version 13.0.0
> 41 4.77 manjaro:base : Ok gcc (GCC) 11.1.0 , clang version 13.0.0
> 42 3.87 opensuse:15.0 : Ok gcc (SUSE Linux) 7.4.1 20190905 [gcc-7-branch revision 275407]
> 43 3.57 opensuse:15.1 : Ok gcc (SUSE Linux) 7.5.0
> 44 3.87 opensuse:15.2 : Ok gcc (SUSE Linux) 7.5.0 , clang version 9.0.1
> 45 5.31 opensuse:15.3 : Ok gcc (SUSE Linux) 7.5.0 , clang version 11.0.1
> 46 3.77 opensuse:15.4 : Ok gcc (SUSE Linux) 7.5.0 , clang version 13.0.1
> 47 4.68 opensuse:tumbleweed : Ok gcc (SUSE Linux) 12.1.1 20220629 [revision 7811663964aa7e31c3939b859bbfa2e16919639f] , clang version 14.0.6
> 48 4.27 oraclelinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4.0.1) , clang version 12.0.1 (Red Hat 12.0.1-4.0.1.module+el8.5.0+20428+2b4ecd47)
> 49 3.96 oraclelinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9.4.0.2) , clang version 13.0.1 (Red Hat 13.0.1-1.0.1.el9)
> 50 3.87 rockylinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-10) , clang version 13.0.1 (Red Hat 13.0.1-2.module+el8.6.0+987+d36ea6a1)
> 51 4.07 rockylinux:9 : Ok gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9) , clang version 13.0.1 (Red Hat 13.0.1-1.el9)
> 52 3.47 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
> 53 3.57 ubuntu:18.04 : Ok gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
> 54 4.28 ubuntu:20.04 : Ok gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
> 55 4.17 ubuntu:21.04 : Ok gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0 , Ubuntu clang version 12.0.0-3ubuntu1~21.04.2
> 56 3.97 ubuntu:21.10 : Ok gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0 , Ubuntu clang version 13.0.0-2
> 57 4.27 ubuntu:22.04 : Ok gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0 , Ubuntu clang version 14.0.0-1ubuntu1
> 58 4.37 ubuntu:22.10 : Ok gcc (Ubuntu 11.3.0-5ubuntu1) 11.3.0 , Ubuntu clang version 14.0.6-2
> [perfbuilder@five ~]$
>
> With this patch:
>
> From c3eac0a3591a36f6590691a21434241d67a3fa89 Mon Sep 17 00:00:00 2001
> From: Arnaldo Carvalho de Melo <[email protected]>
> Date: Thu, 25 Aug 2022 10:01:49 -0300
> Subject: [PATCH 1/1] core: Conditionally define language encodings
>
> It it defined in an enumeration on dwarf.h, so doing it here as defines
> doesn't clash with it and makes this file to build with older distros.
>
> Reported-by: Nathan Chancellor <[email protected]>
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

Thank you for the quick fix, it passed all of my build tests as well:

https://github.com/nathanchance/env/actions/runs/2927921590

Tested-by: Nathan Chancellor <[email protected]>

> ---
> dwarves.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 112 insertions(+)
>
> diff --git a/dwarves.c b/dwarves.c
> index db1dcf5904bc98fe..394a8155325484fc 100644
> --- a/dwarves.c
> +++ b/dwarves.c
> @@ -2085,6 +2085,118 @@ int cus__load_file(struct cus *cus, struct conf_load *conf,
>
> #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
>
> +#ifndef DW_LANG_C89
> +#define DW_LANG_C89 0x0001
> +#endif
> +#ifndef DW_LANG_C
> +#define DW_LANG_C 0x0002
> +#endif
> +#ifndef DW_LANG_Ada83
> +#define DW_LANG_Ada83 0x0003
> +#endif
> +#ifndef DW_LANG_C_plus_plus
> +#define DW_LANG_C_plus_plus 0x0004
> +#endif
> +#ifndef DW_LANG_Cobol74
> +#define DW_LANG_Cobol74 0x0005
> +#endif
> +#ifndef DW_LANG_Cobol85
> +#define DW_LANG_Cobol85 0x0006
> +#endif
> +#ifndef DW_LANG_Fortran77
> +#define DW_LANG_Fortran77 0x0007
> +#endif
> +#ifndef DW_LANG_Fortran90
> +#define DW_LANG_Fortran90 0x0008
> +#endif
> +#ifndef DW_LANG_Pascal83
> +#define DW_LANG_Pascal83 0x0009
> +#endif
> +#ifndef DW_LANG_Modula2
> +#define DW_LANG_Modula2 0x000a
> +#endif
> +#ifndef DW_LANG_Java
> +#define DW_LANG_Java 0x000b
> +#endif
> +#ifndef DW_LANG_C99
> +#define DW_LANG_C99 0x000c
> +#endif
> +#ifndef DW_LANG_Ada95
> +#define DW_LANG_Ada95 0x000d
> +#endif
> +#ifndef DW_LANG_Fortran95
> +#define DW_LANG_Fortran95 0x000e
> +#endif
> +#ifndef DW_LANG_PLI
> +#define DW_LANG_PLI 0x000f
> +#endif
> +#ifndef DW_LANG_ObjC
> +#define DW_LANG_ObjC 0x0010
> +#endif
> +#ifndef DW_LANG_ObjC_plus_plus
> +#define DW_LANG_ObjC_plus_plus 0x0011
> +#endif
> +#ifndef DW_LANG_UPC
> +#define DW_LANG_UPC 0x0012
> +#endif
> +#ifndef DW_LANG_D
> +#define DW_LANG_D 0x0013
> +#endif
> +#ifndef DW_LANG_Python
> +#define DW_LANG_Python 0x0014
> +#endif
> +#ifndef DW_LANG_OpenCL
> +#define DW_LANG_OpenCL 0x0015
> +#endif
> +#ifndef DW_LANG_Go
> +#define DW_LANG_Go 0x0016
> +#endif
> +#ifndef DW_LANG_Modula3
> +#define DW_LANG_Modula3 0x0017
> +#endif
> +#ifndef DW_LANG_Haskell
> +#define DW_LANG_Haskell 0x0018
> +#endif
> +#ifndef DW_LANG_C_plus_plus_03
> +#define DW_LANG_C_plus_plus_03 0x0019
> +#endif
> +#ifndef DW_LANG_C_plus_plus_11
> +#define DW_LANG_C_plus_plus_11 0x001a
> +#endif
> +#ifndef DW_LANG_OCaml
> +#define DW_LANG_OCaml 0x001b
> +#endif
> +#ifndef DW_LANG_Rust
> +#define DW_LANG_Rust 0x001c
> +#endif
> +#ifndef DW_LANG_C11
> +#define DW_LANG_C11 0x001d
> +#endif
> +#ifndef DW_LANG_Swift
> +#define DW_LANG_Swift 0x001e
> +#endif
> +#ifndef DW_LANG_Julia
> +#define DW_LANG_Julia 0x001f
> +#endif
> +#ifndef DW_LANG_Dylan
> +#define DW_LANG_Dylan 0x0020
> +#endif
> +#ifndef DW_LANG_C_plus_plus_14
> +#define DW_LANG_C_plus_plus_14 0x0021
> +#endif
> +#ifndef DW_LANG_Fortran03
> +#define DW_LANG_Fortran03 0x0022
> +#endif
> +#ifndef DW_LANG_Fortran08
> +#define DW_LANG_Fortran08 0x0023
> +#endif
> +#ifndef DW_LANG_RenderScript
> +#define DW_LANG_RenderScript 0x0024
> +#endif
> +#ifndef DW_LANG_BLISS
> +#define DW_LANG_BLISS 0x0025
> +#endif
> +
> int lang__str2int(const char *lang)
> {
> static const char *languages[] = {
> --
> 2.37.2
>

2022-08-28 08:14:57

by Jiri Olsa

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

On Wed, Aug 24, 2022 at 07:50:39PM -0300, Martin Reboredo wrote:
> On 8/24/22 11:38, Luna Jernberg wrote:
> > https://forum.endeavouros.com/t/failed-to-start-load-kernel-modules-on-boot-after-system-update-nvidia/30584/17?u=sradjoker
> >
> > On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> >> Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:

SNIP

>
> Can you try a build of the kernel or the by passing the
> --skip_encoding_btf_enum64 to scripts/pahole-flags.sh?

Martin,
could you please send formal patch this?

thanks,
jirka

>
> Here's a patch for either in tree scripts/pahole-flags.sh or
> /usr/lib/modules/5.19.3-arch1-1/build/scripts/pahole-flags.sh
>
> diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
> index 0d99ef17e4a528..1f1f1d397c399a 100755
> --- a/scripts/pahole-flags.sh
> +++ b/scripts/pahole-flags.sh
> @@ -19,5 +19,9 @@ fi
> if [ "${pahole_ver}" -ge "122" ]; then
> extra_paholeopt="${extra_paholeopt} -j"
> fi
> +if [ "${pahole_ver}" -ge "124" ]; then
> + # see PAHOLE_HAS_LANG_EXCLUDE
> + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64"
> +fi
>
> echo ${extra_paholeopt}
>
> - Martin Rodriguez Reboredo

Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

On 8/28/22 04:38, Jiri Olsa wrote:
> On Wed, Aug 24, 2022 at 07:50:39PM -0300, Martin Reboredo wrote:
>> On 8/24/22 11:38, Luna Jernberg wrote:
>>> https://forum.endeavouros.com/t/failed-to-start-load-kernel-modules-on-boot-after-system-update-nvidia/30584/17?u=sradjoker
>>>
>>> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
>>>> Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:
>
> SNIP
>
>>
>> Can you try a build of the kernel or the by passing the
>> --skip_encoding_btf_enum64 to scripts/pahole-flags.sh?
>
> Martin,
> could you please send formal patch this?
>
> thanks,
> jirka

Sure, sure! Though it might take a bit of time due to being my first
contribution submitted by me (I've already contributed through the Rust
patches though), I'll add Kconfig entries for this, one for the
availability to skip the enum64 encoding and another for toggle the
flag. Stay tuned.

- Martin Rodriguez Reboredo

2022-08-28 17:33:32

by Jiri Olsa

[permalink] [raw]
Subject: Re: ANNOUNCE: pahole v1.24 (Faster BTF encoding, 64-bit BTF enum entries)

On Sun, Aug 28, 2022 at 11:29:35AM -0300, Martin Rodriguez Reboredo wrote:
> On 8/28/22 04:38, Jiri Olsa wrote:
> > On Wed, Aug 24, 2022 at 07:50:39PM -0300, Martin Reboredo wrote:
> >> On 8/24/22 11:38, Luna Jernberg wrote:
> >>> https://forum.endeavouros.com/t/failed-to-start-load-kernel-modules-on-boot-after-system-update-nvidia/30584/17?u=sradjoker
> >>>
> >>> On 8/24/22, Arnaldo Carvalho de Melo <[email protected]> wrote:
> >>>> Em Wed, Aug 24, 2022 at 04:36:18PM +0200, Luna Jernberg escreveu:
> >
> > SNIP
> >
> >>
> >> Can you try a build of the kernel or the by passing the
> >> --skip_encoding_btf_enum64 to scripts/pahole-flags.sh?
> >
> > Martin,
> > could you please send formal patch this?
> >
> > thanks,
> > jirka
>
> Sure, sure! Though it might take a bit of time due to being my first
> contribution submitted by me (I've already contributed through the Rust
> patches though), I'll add Kconfig entries for this, one for the
> availability to skip the enum64 encoding and another for toggle the
> flag. Stay tuned.

hm, but we actually need that just for 5.15 or whatever stable version
is using latest pahole but does not have support for enum64

please check Documentation/process/stable-kernel-rules.rst

jirka