On Thu, Oct 27, 2022 at 09:01:58PM +0900, Dominique Martinet wrote: > pahole 1.24 broke builds on kernel <6.0 which do not have the > new BTF_KIND_ENUM64 BTF tag. > The 5.15 branch fixed this in commit b775fbf532dc01ae53a6fc56168fd30cb4b0c658 > ("kbuild: Add skip_encoding_btf_enum64 option to pahole"), which > we cannot use directly for 5.10 because 5.10 does not have the > pahole-flags.sh script, itself introduced in upstream commit > 0baced0e0938f2895ceba54038eaf15ed91032e7 ("kbuild: Unify options > for BTF generation for vmlinux and modules") > > that last commit is difficult to backport as 5.10 does not have BTF > for modules support: work around the problem by just copying the > pahole-flags.sh script and calling it directly in link-vmlinux.sh, > which is hopefully acceptable as the flags are not shared in this tree. > > Note that compared to 5.15 the flags script does not have > --btf_gen_floats as linux 5.10 did not have that BTF tag yet; > but any new flag added to 5.15 will not be able to be added to 5.10 in > an identical way for any future breakage. > > Cc: Martin Rodriguez Reboredo <yakoyoku@xxxxxxxxx> > Cc: Jiri Olsa <jolsa@xxxxxxxxxx> > CC: Andrii Nakryiko <andrii@xxxxxxxxxx> > Signed-off-by: Dominique Martinet <asmadeus@xxxxxxxxxxxxx> hi, I sent this backport just recently: https://lore.kernel.org/bpf/Y1lkASXgeW0jfP8o@xxxxxxxxx/T/#t it's split into several patches, hopefuly fixing the issue for you jirka > --- > > This came up after updating nixpkgs to pahole 1.24. > https://github.com/NixOS/nixpkgs/pull/194551 > Their 5.15's kernel built just fine as it already got some special > handling added, but since that handling was not added to other stable > kernels it started breaking builds after merging... > > This shouldn't break anything, and should also as a byproduct fix some > builds with pahole 1.18 through 1.21 although I'm not sure if it never > has been backported to 5.10 because it's not a problem there or because > nobody cared (I probably only started caring after the 1.22 release) > > Anyway, if more can be shared I think it'll make things simpler for > everyone going forward :) > > > scripts/link-vmlinux.sh | 2 +- > scripts/pahole-flags.sh | 21 +++++++++++++++++++++ > 2 files changed, 22 insertions(+), 1 deletion(-) > create mode 100755 scripts/pahole-flags.sh > > diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh > index d0b44bee9286..c24da7b68619 100755 > --- a/scripts/link-vmlinux.sh > +++ b/scripts/link-vmlinux.sh > @@ -161,7 +161,7 @@ gen_btf() > vmlinux_link ${1} > > info "BTF" ${2} > - LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${1} > + LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J $("${srctree}/scripts/pahole_flags.sh") ${1} > > # Create ${2} which contains just .BTF section but no symbols. Add > # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all > diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh > new file mode 100755 > index 000000000000..8c82173e42e5 > --- /dev/null > +++ b/scripts/pahole-flags.sh > @@ -0,0 +1,21 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0 > + > +extra_paholeopt= > + > +if ! [ -x "$(command -v ${PAHOLE})" ]; then > + exit 0 > +fi > + > +pahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/') > + > +if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then > + # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars > + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" > +fi > + > +if [ "${pahole_ver}" -ge "124" ]; then > + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" > +fi > + > +echo ${extra_paholeopt} > -- > 2.37.3 >