Dwarves debugging tools
 help / color / mirror / Atom feed
From: Eduard Zingerman <eddyz87@gmail.com>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Alan Maguire <alan.maguire@oracle.com>,
	 Arnaldo Carvalho de Melo <acme@kernel.org>,
	 Andrii Nakryiko <andrii@kernel.org>,
	 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: Fri, 25 Apr 2025 11:14:26 -0700	[thread overview]
Message-ID: <m2v7qsglbx.fsf@gmail.com> (raw)
In-Reply-To: <CAADnVQL+-LiJGXwxD3jEUrOonO-fX0SZC8496dVzUXvfkB7gYQ@mail.gmail.com> (Alexei Starovoitov's message of "Fri, 25 Apr 2025 07:50:10 -0700")

Alexei Starovoitov <alexei.starovoitov@gmail.com> writes:

> Hi All,
>
> Looks like pahole fails to deduplicate BTF when kernel and
> kernel module are built with gcc-14.
> I see this issue with various kernel .config-s on bpf and
> bpf-next trees.
> I tried pahole 1.28 and the latest master. Same issues.
>
> BTF in bpf_testmod.ko built with gcc-14 has 2849 types.
> When built with gcc-13 it has 454 types.
> So something is confusing dedup logic.
> Would be great if dedup experts can take a look,
> since this dedup issue is breaking a lot of selftests/bpf.

It does not look like the problem is with dedup.
Quick glance at structure definitions does not show any duplications,
just much more structs compared to clang:

  $ bpftool btf dump file objs-gcc/bpf_testmod.ko format raw | grep STRUCT | wc -l
  351
  $ bpftool btf dump file objs-clang/bpf_testmod.ko format raw | grep STRUCT | wc -l
  38

Comparing raw C dumps for btf_testmod.ko it looks like much more
structures are injected to distilled base, e.g. the following type is
present in gcc generated .ko and is absent in clang generated:

  struct taskstats {
          long: 64;
          long: 64;
          long: 64;
          long: 64;
          ... lots of long: 64; ...
  }

  $ bpftool btf dump file objs-gcc/bpf_testmod.ko format c \
    | awk '/^struct .* \{/ {s=1;c=0;o=0} \
      {l=match($0, "long: 64;")} \
      s && l {c++} \
      s && !l {o++} \
      s {print $0} \
      s && /^\}/ { if (o==2 && c) print "distilled?\n"}' \
      | grep 'distilled\?' | wc -l
  408
  $ bpftool btf dump file objs-clang/bpf_testmod.ko format c | awk ... | wc -l
  33

  parent reply	other threads:[~2025-04-25 18:14 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
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 [this message]
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=m2v7qsglbx.fsf@gmail.com \
    --to=eddyz87@gmail.com \
    --cc=acme@kernel.org \
    --cc=alan.maguire@oracle.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=dwarves@vger.kernel.org \
    --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