Re: [PATCH bpf-next 1/3] objtool: Move noreturns.h to a common location

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 11, 2025 at 12:12 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote:
>
> On Tue, 2025-02-11 at 10:33 +0800, Yafang Shao wrote:
>
> [...]
>
> > diff --git a/tools/include/linux/noreturns.h b/tools/include/linux/noreturns.h
> > new file mode 100644
> > index 000000000000..b2174894f9f7
> > --- /dev/null
> > +++ b/tools/include/linux/noreturns.h
> > @@ -0,0 +1,52 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +
> > +/*
> > + * This is a (sorted!) list of all known __noreturn functions in the kernel.
> > + * It's needed for objtool to properly reverse-engineer the control flow graph.
> > + *
> > + * Yes, this is unfortunate.  A better solution is in the works.
> > + */
>
> I'm probably out of context for this discussion, sorry if I'm raising
> points already discussed.

Please refer to the discussion at
https://lore.kernel.org/bpf/CAADnVQKXgPTQsjUDB3tjZ46aPWvoEcxBCnDXro8WPtNhkGNFyg@xxxxxxxxxxxxxx/
 for more details.

>
> The DW_AT_noreturn attribute is defined for DWARF. A simple script
> like [1] could be used to find all functions with this attribute known
> to DWARF. Using this script I see several functions present in my
> kernel but not present in the NORETURN list from this patch:
> - abort
> - devtmpfs_work_loop
> - play_dead
> - rcu_gp_kthread
> - rcu_tasks_kthread
>
> All these are marked as FUNC symbols when doing 'readelf --symbols vmlinux'.
>
> 'pahole' could be modified to look for DW_AT_noreturn attributes and
> add this information in BTF. E.g. by adding special btf_decl_tag to
> corresponding FUNC definitions. This won't work if kernel is compiled
> w/o BTF, of-course.
>
> [1] https://gist.github.com/eddyz87/d8513a731dfe7e2be52b346aef1de353

Thank you for your example—it’s been really helpful. Following
Alexei's suggestion, we’ll address this in the next step. We need to
apply the fix to the current kernel and backport it, so for now, the
simplest approach is to implement the current solution.

--
Regards
Yafang





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux