Re: [PATCH bpf-next 3/3] selftests/bpf: allow compiling BPF objects without BTF

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

 



On Sun, Mar 21, 2021 at 6:07 PM Alexei Starovoitov
<alexei.starovoitov@xxxxxxxxx> wrote:
>
> On Sat, Mar 20, 2021 at 10:00:57AM -0700, Andrii Nakryiko wrote:
> > On Fri, Mar 19, 2021 at 7:22 PM Alexei Starovoitov
> > <alexei.starovoitov@xxxxxxxxx> wrote:
> > >
> > > On Fri, Mar 19, 2021 at 01:59:09PM -0700, Andrii Nakryiko wrote:
> > > > Add ability to skip BTF generation for some BPF object files. This is done
> > > > through using a convention of .nobtf.c file name suffix.
> > > >
> > > > Also add third statically linked file to static_linked selftest. This file has
> > > > no BTF, causing resulting object file to have only some of DATASEC BTF types.
> > > > It also is using (from BPF code) global variables. This tests both libbpf's
> > > > static linking logic and bpftool's skeleton generation logic.
> > >
> > > I don't like the long term direction of patch 1 and 3.
> > > BTF is mandatory for the most bpf kernel features added in the last couple years.
> > > Making user space do quirks for object files without BTF is not something
> > > we should support or maintain. If there is no BTF the linker and skeleton
> > > generation shouldn't crash, of course, but they should reject such object.
> >
> > I don't think tools need to enforce any policies like that. They are
> > tools and should be unassuming about the way they are going to be used
> > to the extent possible.
>
> Right and bpftool/skeleton was used with BTF since day one.
> Without BTF the skeleton core ideas are lost. The skeleton api
> gives no benefit. So what's the point of adding support for skeleton without BTF?
> Is there a user that would benefit? If so, what will they gain from
> such BTF-less skeleton?

The only part of skeleton API that's not available is convenient
user-space access to global variables. If you don't use global
variables you don't use BTF at all with skeleton. So all features but
one work without BTF just fine: compile-time maps and progs (and
links) references, embedding object file in .skel.h, and even
automatic memory-mapping of .data/.rodata/.bss (just unknown struct
layout).

Compile-time maps and progs and separately object file embedding in C
header are useful in their own rights, even individually. There is no
single "core idea" of the BPF skeleton in my mind. What is it for you?

So given none of the fixes are horrible hacks and won't incur
additional maintenance costs, what's the problem with accepting them?



[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