From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Alan Maguire <alan.maguire@oracle.com>
Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>,
Alexei Starovoitov <alexei.starovoitov@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>, Eduard <eddyz87@gmail.com>,
Ihor Solodrai <ihor.solodrai@linux.dev>,
bpf <bpf@vger.kernel.org>,
dwarves@vger.kernel.org,
Kumar Kartikeya Dwivedi <memxor@gmail.com>
Subject: Re: pahole and gcc-14 issues
Date: Mon, 28 Apr 2025 16:50:12 -0300 [thread overview]
Message-ID: <aA_b9N89lHeVSm1b@x1> (raw)
In-Reply-To: <aA_Yo6v7qicMy9xk@x1>
On Mon, Apr 28, 2025 at 04:36:07PM -0300, Arnaldo Carvalho de Melo wrote:
> On Mon, Apr 28, 2025 at 04:21:14PM +0100, Alan Maguire wrote:
> > In the bad case, the bpf_prog active member:
>
> > <2><3d594>: Abbrev Number: 4 (DW_TAG_member)
> > <3d595> DW_AT_name : (indirect string, offset: 0x3b976): active
> > <3d599> DW_AT_decl_file : 125
> > <3d59a> DW_AT_decl_line : 1654
> > <3d59c> DW_AT_decl_column : 17
> > <3d59d> DW_AT_type : <0x4bd05>
>
> > ...is a pointer:
> >
> > <1><4bd05>: Abbrev Number: 58 (DW_TAG_pointer_type)
> > <4bd06> DW_AT_byte_size : 8
> > <4bd07> DW_AT_address_class: 2
> > <4bd08> DW_AT_type : <0x301cd>
>
> > ...which points at an int
>
> > <1><301cd>: Abbrev Number: 214 (DW_TAG_base_type)
> > <301cf> DW_AT_byte_size : 4
> > <301d0> DW_AT_encoding : 5 (signed)
> > <301d1> DW_AT_name : int
> > <301d5> DW_AT_name : int
>
> > ...but note the the DW_AT_address_class attribute in the latter case and
> > the two DW_AT_name values. We don't use that address attribute in pahole
> > as far as I can see, but it might be enough to cause problems.
I just looked at a vmlinux built with gcc 15 and we have those:
<1><7812a39>: Abbrev Number: 7 (DW_TAG_structure_type)
<7812a3a> DW_AT_name : (indirect string, offset: 0xc0e4): alloc_tag_counters
<7812a3e> DW_AT_byte_size : 16
<7812a3f> DW_AT_decl_file : 76
<7812a40> DW_AT_decl_line : 18
<7812a41> DW_AT_decl_column : 8
<7812a42> DW_AT_sibling : <0x7812a61>
<2><7812a46>: Abbrev Number: 1 (DW_TAG_member)
<7812a47> DW_AT_name : (indirect string, offset: 0x3c288f): bytes
<7812a4b> DW_AT_decl_file : 76
<7812a4c> DW_AT_decl_line : 19
<7812a4d> DW_AT_decl_column : 6
<7812a4e> DW_AT_type : <0x780f217>
<7812a52> DW_AT_data_member_location: 0
<2><7812a53>: Abbrev Number: 1 (DW_TAG_member)
<7812a54> DW_AT_name : (indirect string, offset: 0x255770): calls
<7812a58> DW_AT_decl_file : 76
<7812a59> DW_AT_decl_line : 20
<7812a5a> DW_AT_decl_column : 6
<7812a5b> DW_AT_type : <0x780f217>
<7812a5f> DW_AT_data_member_location: 8
<1><7812a88>: Abbrev Number: 80 (DW_TAG_pointer_type)
<7812a89> DW_AT_byte_size : 8
<7812a89> DW_AT_address_class: 2
<7812a89> DW_AT_type : <0x7812a39>
<1><7812a61>: Abbrev Number: 25 (DW_TAG_structure_type)
<7812a62> DW_AT_name : (indirect string, offset: 0x585bd1): alloc_tag
<7812a66> DW_AT_byte_size : 40
<7812a67> DW_AT_alignment : 8
<7812a68> DW_AT_decl_file : 76
<7812a69> DW_AT_decl_line : 28
<7812a6a> DW_AT_decl_column : 8
<7812a6a> DW_AT_sibling : <0x7812a88>
<2><7812a6e>: Abbrev Number: 54 (DW_TAG_member)
<7812a6f> DW_AT_name : ct
<7812a72> DW_AT_decl_file : 76
<7812a73> DW_AT_decl_line : 29
<7812a74> DW_AT_decl_column : 19
<7812a75> DW_AT_type : <0x78129ea>
<7812a79> DW_AT_alignment : 8
<7812a79> DW_AT_data_member_location: 0
<2><7812a7a>: Abbrev Number: 1 (DW_TAG_member)
<7812a7b> DW_AT_name : (indirect string, offset: 0x565566): counters
<7812a7f> DW_AT_decl_file : 76
<7812a80> DW_AT_decl_line : 30
<7812a81> DW_AT_decl_column : 38
<7812a82> DW_AT_type : <0x7812a88>
<7812a86> DW_AT_data_member_location: 32
struct alloc_tag {
struct codetag ct;
struct alloc_tag_counters __percpu *counters;
} __aligned(8);
Its the __percpu, something else to catch in the DWARF loader and then
to use when pretty printing.
⬢ [acme@toolbx linux]$ pahole -F dwarf -C alloc_tag ../build/v6.15.0-rc2+/vmlinux
struct alloc_tag {
struct codetag ct __attribute__((__aligned__(8))); /* 0 32 */
struct alloc_tag_counters * counters; /* 32 8 */
/* size: 40, cachelines: 1, members: 2 */
/* forced alignments: 1 */
/* last cacheline: 40 bytes */
} __attribute__((__aligned__(8)));
⬢ [acme@toolbx linux]$
- Arnaldo
> Looks like broken DWARF, there should be just one DW_AT_name per
> DW_TAG_base_type, what is the language for the CU where the bad cases
> appear? Is some sort of LTO being used?
next prev parent reply other threads:[~2025-04-28 19:50 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 14:50 pahole and gcc-14 issues Alexei Starovoitov
2025-04-25 17:50 ` Alan Maguire
2025-04-25 17:58 ` Andrii Nakryiko
2025-04-25 20:36 ` Alan Maguire
2025-04-25 20:41 ` Andrii Nakryiko
2025-04-26 17:28 ` Alan Maguire
2025-04-28 15:21 ` Alan Maguire
2025-04-28 19:36 ` Arnaldo Carvalho de Melo
2025-04-28 19:50 ` Arnaldo Carvalho de Melo [this message]
2025-04-28 22:12 ` Alexei Starovoitov
2025-04-29 0:33 ` Andrii Nakryiko
2025-04-29 6:59 ` Andrii Nakryiko
2025-04-29 15:37 ` Andrii Nakryiko
2025-04-29 15:55 ` Alan Maguire
2025-04-29 19:29 ` Eduard Zingerman
2025-04-29 19:50 ` Andrii Nakryiko
2025-04-29 20:34 ` Eduard Zingerman
2025-04-29 20:55 ` Alexei Starovoitov
2025-04-29 21:44 ` Andrii Nakryiko
2025-04-25 20:58 ` Andrii Nakryiko
2025-04-25 18:14 ` Eduard Zingerman
2025-04-25 19:43 ` Eduard Zingerman
2025-04-25 20:16 ` Alexei Starovoitov
2025-04-25 20:25 ` Eduard Zingerman
2025-04-25 20:30 ` Alexei Starovoitov
2025-04-25 20:30 ` Eduard Zingerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aA_b9N89lHeVSm1b@x1 \
--to=acme@kernel.org \
--cc=alan.maguire@oracle.com \
--cc=alexei.starovoitov@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=dwarves@vger.kernel.org \
--cc=eddyz87@gmail.com \
--cc=ihor.solodrai@linux.dev \
--cc=memxor@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox