All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.