Re: [PATCH v4 dwarves] btf: Add support for the floating-point types

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

 



On Wed, Mar 10, 2021 at 1:02 PM Ilya Leoshkevich <iii@xxxxxxxxxxxxx> wrote:
>
> On Wed, 2021-03-10 at 12:25 -0800, Andrii Nakryiko wrote:
> > On Wed, Mar 10, 2021 at 12:16 PM Ilya Leoshkevich <iii@xxxxxxxxxxxxx>
> > wrote:
> > >
> > > Some BPF programs compiled on s390 fail to load, because s390
> > > arch-specific linux headers contain float and double types.
> > >
> > > Fix as follows:
> > >
> > > - Make the DWARF loader fill base_type.float_type.
> > >
> > > - Introduce the --btf_gen_floats command-line parameter, so that
> > >   pahole could be used to build both the older and the newer
> > > kernels.
> > >
> > > - libbpf introduced the support for the floating-point types in
> > > commit
> > >   986962fade5, so update the libbpf submodule to that version and
> > > use
> > >   the new btf__add_float() function in order to emit the floating-
> > > point
> > >   types when not in the compatibility mode.
> > >
> > > - Make the BTF loader recognize the new BTF kind.
> > >
> > > Example of the resulting entry in the vmlinux BTF:
> > >
> > >     [7164] FLOAT 'double' size=8
> > >
> > > when building with:
> > >
> > >     LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${1} --btf_gen_floats
> > >
> > > Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx>
> > > ---
> >
> > So it looks good to me overall, but here's the question about using
> > this --btf-gen-floats flag from link-vmlinux.sh script. If you
> > specify
> > that flag for an old pahole, it will probably error out, right? So
> > that means we'll need to do feature detection for pahole supported
> > features, right?..
>
> I was planning to just bump the version in this check:
>
>     if [ "${pahole_ver}" -lt "116" ]; then

No-no-no, we can't just arbitrarily say that the minimal pahole
version is now 1.21, while 1.16 would work just fine in almost all
cases on almost all architectures.

>
> But we could also keep allowing 1.16-1.20 and pass the new flag on
> 1.21+ only.
>
> What do you think?

I think we'll have to do the extra check. I'd also add something like
--btf-gen-all, that would turn on all the supported BTF features. So
that people that generate BTF for kernels externally (e.g., for old
kernels to support BPF CO-RE), could just do --btf-gen-all, instead of
potentially longer list of all the BTF optional subsets
(--btf-gen-floats --btf-gen-somemore --btf-gen-morecool etc). That
doesn't have to happen in this patch, of course.

So with what we have now:

Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx>

>



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux