Re: [PATCH bpf-next v3 4/6] lib/Kconfig.debug: Set the minimum required pahole version to v1.22

Andrii Nakryiko
2025-12-06T00:33:07Z

On Fri, Dec 5, 2025 at 2:32 PM Ihor Solodrai <ihor.solodrai@linux.dev> wrote:
>
> Subsequent patches in the series change vmlinux linking scripts to
> unconditionally pass --btf_encode_detached to pahole, which was
> introduced in v1.22 [1][2].
>
> This change allows to remove PAHOLE_HAS_SPLIT_BTF Kconfig option and
> other checks of older pahole versions.
>
> [1] https://github.com/acmel/dwarves/releases/tag/v1.22
> [2] https://lore.kernel.org/bpf/cbafbf4e-9073-4383-8ee6-1353f9e5869c@oracle.com/
>
> Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
> ---
> lib/Kconfig.debug | 13 ++++---------
> scripts/Makefile.btf | 9 +--------
> tools/sched_ext/README.md | 1 -
> 3 files changed, 5 insertions(+), 18 deletions(-)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 742b23ef0d8b..3abf3ae554b6 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -389,18 +389,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_DWARF4 || PAHOLE_VERSION >= 121
> + depends on PAHOLE_VERSION >= 122
> # 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 requires pahole v1.16 or later (v1.21 or later to
> - support DWARF 5), which will convert DWARF type info into equivalent
> - deduplicated BTF type info.
> -
> -config PAHOLE_HAS_SPLIT_BTF
> - def_bool PAHOLE_VERSION >= 119
> + Turning this on requires pahole v1.22 or later, which will convert
> + DWARF type info into equivalent deduplicated BTF type info.
>
> config PAHOLE_HAS_BTF_TAG
> def_bool PAHOLE_VERSION >= 123
> @@ -422,7 +417,7 @@ config PAHOLE_HAS_LANG_EXCLUDE
> config DEBUG_INFO_BTF_MODULES
> bool "Generate BTF type information for kernel modules"
> default y
> - depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
> + depends on DEBUG_INFO_BTF && MODULES
> help
> Generate compact split BTF type information for kernel modules.
>
> diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf
> index db76335dd917..7c1cd6c2ff75 100644
> --- a/scripts/Makefile.btf
> +++ b/scripts/Makefile.btf
> @@ -7,14 +7,7 @@ JOBS := $(patsubst -j%,%,$(filter -j%,$(MAKEFLAGS)))
>
> ifeq ($(call test-le, $(pahole-ver), 125),y)
>
> -# pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars
> -ifeq ($(call test-le, $(pahole-ver), 121),y)
> -pahole-flags-$(call test-ge, $(pahole-ver), 118) += --skip_encoding_btf_vars
> -endif
> -
> -pahole-flags-$(call test-ge, $(pahole-ver), 121) += --btf_gen_floats
> -
> -pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j$(JOBS)
> +pahole-flags-$(call test-ge, $(pahole-ver), 122) += --btf_gen_floats -j$(JOBS)

this should be unconditional given we expect at least 1.22, no?

>
> pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsistent_proto --btf_gen_optimized
>
> diff --git a/tools/sched_ext/README.md b/tools/sched_ext/README.md
> index 16a42e4060f6..56a9d1557ac4 100644
> --- a/tools/sched_ext/README.md
> +++ b/tools/sched_ext/README.md
> @@ -65,7 +65,6 @@ It's also recommended that you also include the following Kconfig options:
> ```
> CONFIG_BPF_JIT_ALWAYS_ON=y
> CONFIG_BPF_JIT_DEFAULT_ON=y
> -CONFIG_PAHOLE_HAS_SPLIT_BTF=y
> CONFIG_PAHOLE_HAS_BTF_TAG=y
> ```
>
> --
> 2.52.0
>