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
next prev 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