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