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 12:43:13 -0700	[thread overview]
Message-ID: <m2h62cgh7y.fsf@gmail.com> (raw)
In-Reply-To: <m2v7qsglbx.fsf@gmail.com> (Eduard Zingerman's message of "Fri, 25 Apr 2025 11:14:26 -0700")

Eduard Zingerman <eddyz87@gmail.com> writes:

> 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:

Or maybe it is.
For example, task_struct is added to .ko BTF generated by gcc, but not
clang. This can only happen if dedup fails to merge structures in base
and module btf, right?

Here is an interesting observation:

$ bpftool btf dump file ~/tmp/objs-gcc/bpf_testmod.ko format c | awk '/struct task_struct \{/ {s=1} s {print $0} /^\}/ {s=0}' > ~/tmp/task_struct.ko.c

$ bpftool btf dump file ~/tmp/objs-gcc/vmlinux format c | awk '/struct task_struct \{/ {s=1} s {print $0} /^\}/ {s=0}' > ~/tmp/task_struct.vmlinux.c

$ diff -pruN ~/tmp/task_struct.ko.c ~/tmp/task_struct.vmlinux.c
--- /home/ezingerman/tmp/task_struct.ko.c       2025-04-25 12:37:48.312480603 -0700
+++ /home/ezingerman/tmp/task_struct.vmlinux.c  2025-04-25 12:38:03.096644654 -0700
@@ -18,7 +18,6 @@ struct task_struct {
        int static_prio;
        int normal_prio;
        unsigned int rt_priority;
-       long: 0;
        struct sched_entity se;
        struct sched_rt_entity rt;
        struct sched_dl_entity dl;
@@ -46,7 +45,6 @@ struct task_struct {
        short unsigned int migration_flags;
        int rcu_read_lock_nesting;
        union rcu_special rcu_read_unlock_special;
-       long: 0;
        struct list_head rcu_node_entry;
        struct rcu_node *rcu_blocked_node;
        long unsigned int rcu_tasks_nvcsw;
@@ -55,16 +53,13 @@ struct task_struct {
        int rcu_tasks_idle_cpu;
        struct list_head rcu_tasks_holdout_list;
        int rcu_tasks_exit_cpu;
-       long: 0;
        struct list_head rcu_tasks_exit_list;
        int trc_reader_nesting;
        int trc_ipi_to_cpu;
        union rcu_special trc_reader_special;
-       long: 0;
        struct list_head trc_holdout_list;
        struct list_head trc_blkd_node;
        int trc_blkd_cpu;
-       long: 0;
        struct sched_info sched_info;
        struct list_head tasks;
        struct plist_node pushable_tasks;
@@ -166,7 +161,6 @@ struct task_struct {
        struct mutex_waiter *blocked_on;
        struct mutex *blocker_mutex;
        int non_block_count;
-       long: 0;
        struct irqtrace_events irqtrace;
        unsigned int hardirq_threaded;
        u64 hardirq_chain_key;
@@ -277,7 +271,6 @@ struct task_struct {
        __u64 __mce_reserved: 62;
        struct callback_head mce_kill_me;
        int mce_count;
-       long: 0;
        struct llist_head kretprobe_instances;
        struct llist_head rethooks;
        struct callback_head l1d_flush_kill;

  reply	other threads:[~2025-04-25 19:43 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
2025-04-25 19:43   ` Eduard Zingerman [this message]
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=m2h62cgh7y.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