On Wed, Sep 11, 2024 at 08:03:57PM +0900, Masahiro Yamada wrote: > When DEBUG_INFO_DWARF5 is selected, pahole 1.21+ is required to enable > DEBUG_INFO_BTF. > > When DEBUG_INFO_DWARF4 or DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is selected, > DEBUG_INFO_BTF can be enabled without pahole installed, but a build error > will occur in scripts/link-vmlinux.sh: > > LD .tmp_vmlinux1 > BTF: .tmp_vmlinux1: pahole (pahole) is not available > Failed to generate BTF for vmlinux > Try to disable CONFIG_DEBUG_INFO_BTF > > We did not guard DEBUG_INFO_BTF by PAHOLE_VERSION when previously > discussed [1]. > > However, commit 613fe1692377 ("kbuild: Add CONFIG_PAHOLE_VERSION") > added CONFIG_PAHOLE_VERSION at all. Now several CONFIG options, as > well as the combination of DEBUG_INFO_BTF and DEBUG_INFO_DWARF5, are > guarded by PAHOLE_VERSION. > > The remaining compile-time check in scripts/link-vmlinux.sh now appears > to be an awkward inconsistency. > > This commit adopts Nathan's original work. > > [1]: https://lore.kernel.org/lkml/20210111180609.713998-1-natechancellor@xxxxxxxxx/ > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > --- > > lib/Kconfig.debug | 3 ++- > scripts/link-vmlinux.sh | 12 ------------ > 2 files changed, 2 insertions(+), 13 deletions(-) > > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > index 5e2f30921cb2..eff408a88dfd 100644 > --- a/lib/Kconfig.debug > +++ b/lib/Kconfig.debug > @@ -379,12 +379,13 @@ config DEBUG_INFO_BTF > depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED > depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST > depends on BPF_SYSCALL > + depends on PAHOLE_VERSION >= 116 > depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121 > # pahole uses elfutils, which does not have support for Hexagon relocations > depends on !HEXAGON > help > Generate deduplicated BTF type information from DWARF debug info. > - Turning this on expects presence of pahole tool, which will convert > + Turning this on requires presence of pahole tool, which will convert > DWARF type info into equivalent deduplicated BTF type info. > > config PAHOLE_HAS_SPLIT_BTF > diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh > index cfffc41e20ed..53bd4b727e21 100755 > --- a/scripts/link-vmlinux.sh > +++ b/scripts/link-vmlinux.sh > @@ -111,20 +111,8 @@ vmlinux_link() > # ${1} - vmlinux image > gen_btf() > { > - local pahole_ver > local btf_data=${1}.btf.o > > - if ! [ -x "$(command -v ${PAHOLE})" ]; then > - echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" > - return 1 > - fi > - > - pahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/') > - if [ "${pahole_ver}" -lt "116" ]; then > - echo >&2 "BTF: ${1}: pahole version $(${PAHOLE} --version) is too old, need at least v1.16" > - return 1 > - fi > - > info BTF "${btf_data}" > LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${PAHOLE_FLAGS} ${1} > > -- > 2.43.0 >