* [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh
@ 2024-09-11 11:03 Masahiro Yamada
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Masahiro Yamada @ 2024-09-11 11:03 UTC (permalink / raw)
To: Martin KaFai Lau, bpf
Cc: linux-arch, Andrii Nakryiko, linux-kernel, Nathan Chancellor,
Masahiro Yamada, Nicolas Schier, linux-kbuild
CONFIG_DEBUG_INFO_BTF depends on CONFIG_BPF_SYSCALL, which in turn
selects CONFIG_BPF.
When CONFIG_DEBUG_INFO_BTF=y, CONFIG_BPF=y is always met.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
scripts/link-vmlinux.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index bd196944e350..cfffc41e20ed 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -288,7 +288,7 @@ strip_debug=
vmlinux_link vmlinux
# fill in BTF IDs
-if is_enabled CONFIG_DEBUG_INFO_BTF && is_enabled CONFIG_BPF; then
+if is_enabled CONFIG_DEBUG_INFO_BTF; then
info BTFIDS vmlinux
${RESOLVE_BTFIDS} vmlinux
fi
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
2024-09-11 11:03 [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Masahiro Yamada
@ 2024-09-11 11:03 ` Masahiro Yamada
2024-09-11 17:25 ` Alan Maguire
` (2 more replies)
2024-09-11 11:03 ` [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version Masahiro Yamada
` (2 subsequent siblings)
3 siblings, 3 replies; 11+ messages in thread
From: Masahiro Yamada @ 2024-09-11 11:03 UTC (permalink / raw)
To: Martin KaFai Lau, bpf
Cc: linux-arch, Andrii Nakryiko, linux-kernel, Nathan Chancellor,
Masahiro Yamada, Andrew Morton, Nicolas Schier, linux-kbuild
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@gmail.com/
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
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
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
2024-09-11 11:03 [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Masahiro Yamada
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
@ 2024-09-11 11:03 ` Masahiro Yamada
2024-09-11 21:08 ` Andrii Nakryiko
2024-09-11 21:10 ` Nathan Chancellor
2024-09-11 21:02 ` [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Nathan Chancellor
2024-09-11 21:05 ` Andrii Nakryiko
3 siblings, 2 replies; 11+ messages in thread
From: Masahiro Yamada @ 2024-09-11 11:03 UTC (permalink / raw)
To: Martin KaFai Lau, bpf
Cc: linux-arch, Andrii Nakryiko, linux-kernel, Nathan Chancellor,
Masahiro Yamada, Andrew Morton, Bill Wendling, Justin Stitt,
Nick Desaulniers, llvm
As described in commit 42d9b379e3e1 ("lib/Kconfig.debug: Allow BTF +
DWARF5 with pahole 1.21+"), the combination of CONFIG_DEBUG_INFO_BTF
and CONFIG_DEBUG_INFO_DWARF5 requires pahole 1.21+.
GCC 11+ and Clang 14+ default to DWARF 5 when the -g flag is passed.
For the same reason, the combination of CONFIG_DEBUG_INFO_BTF and
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is also likely to require
pahole 1.21+. (At least, it is uncertain whether the requirement is
pahole 1.16+ or 1.21+.)
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index eff408a88dfd..011a7abc68a8 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -380,7 +380,7 @@ config DEBUG_INFO_BTF
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
depends on BPF_SYSCALL
depends on PAHOLE_VERSION >= 116
- depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121
+ depends on DEBUG_INFO_DWARF4 || PAHOLE_VERSION >= 121
# pahole uses elfutils, which does not have support for Hexagon relocations
depends on !HEXAGON
help
--
2.43.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
@ 2024-09-11 17:25 ` Alan Maguire
2024-09-12 0:45 ` Masahiro Yamada
2024-09-11 21:07 ` Andrii Nakryiko
2024-09-11 21:08 ` Nathan Chancellor
2 siblings, 1 reply; 11+ messages in thread
From: Alan Maguire @ 2024-09-11 17:25 UTC (permalink / raw)
To: Masahiro Yamada, Martin KaFai Lau, bpf
Cc: linux-arch, Andrii Nakryiko, linux-kernel, Nathan Chancellor,
Andrew Morton, Nicolas Schier, linux-kbuild
On 11/09/2024 12:03, 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@gmail.com/
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Nice cleanup! For the series
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
One small thing below..
> ---
>
> 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.
>
One thing we lose from the change below is an explicit message about the
minimal pahole version required. While it is codified in the
dependendencies, given that we used to loudly warn about this,
would it make sense to note it in the help text here; just a sentence
like "BTF generation requires pahole v1.16 or later."? Thanks!
Alan
> 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}
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh
2024-09-11 11:03 [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Masahiro Yamada
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
2024-09-11 11:03 ` [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version Masahiro Yamada
@ 2024-09-11 21:02 ` Nathan Chancellor
2024-09-11 21:05 ` Andrii Nakryiko
3 siblings, 0 replies; 11+ messages in thread
From: Nathan Chancellor @ 2024-09-11 21:02 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Nicolas Schier, linux-kbuild
On Wed, Sep 11, 2024 at 08:03:56PM +0900, Masahiro Yamada wrote:
> CONFIG_DEBUG_INFO_BTF depends on CONFIG_BPF_SYSCALL, which in turn
> selects CONFIG_BPF.
>
> When CONFIG_DEBUG_INFO_BTF=y, CONFIG_BPF=y is always met.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> scripts/link-vmlinux.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
> index bd196944e350..cfffc41e20ed 100755
> --- a/scripts/link-vmlinux.sh
> +++ b/scripts/link-vmlinux.sh
> @@ -288,7 +288,7 @@ strip_debug=
> vmlinux_link vmlinux
>
> # fill in BTF IDs
> -if is_enabled CONFIG_DEBUG_INFO_BTF && is_enabled CONFIG_BPF; then
> +if is_enabled CONFIG_DEBUG_INFO_BTF; then
> info BTFIDS vmlinux
> ${RESOLVE_BTFIDS} vmlinux
> fi
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh
2024-09-11 11:03 [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Masahiro Yamada
` (2 preceding siblings ...)
2024-09-11 21:02 ` [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Nathan Chancellor
@ 2024-09-11 21:05 ` Andrii Nakryiko
3 siblings, 0 replies; 11+ messages in thread
From: Andrii Nakryiko @ 2024-09-11 21:05 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Nathan Chancellor, Nicolas Schier, linux-kbuild
On Wed, Sep 11, 2024 at 4:04 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> CONFIG_DEBUG_INFO_BTF depends on CONFIG_BPF_SYSCALL, which in turn
> selects CONFIG_BPF.
>
> When CONFIG_DEBUG_INFO_BTF=y, CONFIG_BPF=y is always met.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
> scripts/link-vmlinux.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
LGTM
Acked-by: Andrii Nakryiko <andrii@kernel.org>
> diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
> index bd196944e350..cfffc41e20ed 100755
> --- a/scripts/link-vmlinux.sh
> +++ b/scripts/link-vmlinux.sh
> @@ -288,7 +288,7 @@ strip_debug=
> vmlinux_link vmlinux
>
> # fill in BTF IDs
> -if is_enabled CONFIG_DEBUG_INFO_BTF && is_enabled CONFIG_BPF; then
> +if is_enabled CONFIG_DEBUG_INFO_BTF; then
> info BTFIDS vmlinux
> ${RESOLVE_BTFIDS} vmlinux
> fi
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
2024-09-11 17:25 ` Alan Maguire
@ 2024-09-11 21:07 ` Andrii Nakryiko
2024-09-11 21:08 ` Nathan Chancellor
2 siblings, 0 replies; 11+ messages in thread
From: Andrii Nakryiko @ 2024-09-11 21:07 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Nathan Chancellor, Andrew Morton, Nicolas Schier, linux-kbuild
On Wed, Sep 11, 2024 at 4:04 AM Masahiro Yamada <masahiroy@kernel.org> 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@gmail.com/
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
LGTM
Acked-by: Andrii Nakryiko <andrii@kernel.org>
> 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
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
2024-09-11 11:03 ` [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version Masahiro Yamada
@ 2024-09-11 21:08 ` Andrii Nakryiko
2024-09-11 21:10 ` Nathan Chancellor
1 sibling, 0 replies; 11+ messages in thread
From: Andrii Nakryiko @ 2024-09-11 21:08 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Nathan Chancellor, Andrew Morton, Bill Wendling, Justin Stitt,
Nick Desaulniers, llvm
On Wed, Sep 11, 2024 at 4:04 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> As described in commit 42d9b379e3e1 ("lib/Kconfig.debug: Allow BTF +
> DWARF5 with pahole 1.21+"), the combination of CONFIG_DEBUG_INFO_BTF
> and CONFIG_DEBUG_INFO_DWARF5 requires pahole 1.21+.
>
> GCC 11+ and Clang 14+ default to DWARF 5 when the -g flag is passed.
> For the same reason, the combination of CONFIG_DEBUG_INFO_BTF and
> CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is also likely to require
> pahole 1.21+. (At least, it is uncertain whether the requirement is
> pahole 1.16+ or 1.21+.)
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
Make sense
Acked-by: Andrii Nakryiko <andrii@kernel.org>
> lib/Kconfig.debug | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index eff408a88dfd..011a7abc68a8 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -380,7 +380,7 @@ config DEBUG_INFO_BTF
> depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
> depends on BPF_SYSCALL
> depends on PAHOLE_VERSION >= 116
> - depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121
> + depends on DEBUG_INFO_DWARF4 || PAHOLE_VERSION >= 121
> # pahole uses elfutils, which does not have support for Hexagon relocations
> depends on !HEXAGON
> help
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
2024-09-11 17:25 ` Alan Maguire
2024-09-11 21:07 ` Andrii Nakryiko
@ 2024-09-11 21:08 ` Nathan Chancellor
2 siblings, 0 replies; 11+ messages in thread
From: Nathan Chancellor @ 2024-09-11 21:08 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Andrew Morton, Nicolas Schier, linux-kbuild
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@gmail.com/
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> 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
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
2024-09-11 11:03 ` [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version Masahiro Yamada
2024-09-11 21:08 ` Andrii Nakryiko
@ 2024-09-11 21:10 ` Nathan Chancellor
1 sibling, 0 replies; 11+ messages in thread
From: Nathan Chancellor @ 2024-09-11 21:10 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Andrew Morton, Bill Wendling, Justin Stitt, Nick Desaulniers,
llvm
On Wed, Sep 11, 2024 at 08:03:58PM +0900, Masahiro Yamada wrote:
> As described in commit 42d9b379e3e1 ("lib/Kconfig.debug: Allow BTF +
> DWARF5 with pahole 1.21+"), the combination of CONFIG_DEBUG_INFO_BTF
> and CONFIG_DEBUG_INFO_DWARF5 requires pahole 1.21+.
>
> GCC 11+ and Clang 14+ default to DWARF 5 when the -g flag is passed.
> For the same reason, the combination of CONFIG_DEBUG_INFO_BTF and
> CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is also likely to require
> pahole 1.21+. (At least, it is uncertain whether the requirement is
> pahole 1.16+ or 1.21+.)
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Indeed, I think this is a safer, longterm dependency, until we bump the
minimum versions to the ones listed in the commit message, unless there
is DWARF6 by that point :)
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> lib/Kconfig.debug | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index eff408a88dfd..011a7abc68a8 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -380,7 +380,7 @@ config DEBUG_INFO_BTF
> depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
> depends on BPF_SYSCALL
> depends on PAHOLE_VERSION >= 116
> - depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121
> + depends on DEBUG_INFO_DWARF4 || PAHOLE_VERSION >= 121
> # pahole uses elfutils, which does not have support for Hexagon relocations
> depends on !HEXAGON
> help
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
2024-09-11 17:25 ` Alan Maguire
@ 2024-09-12 0:45 ` Masahiro Yamada
0 siblings, 0 replies; 11+ messages in thread
From: Masahiro Yamada @ 2024-09-12 0:45 UTC (permalink / raw)
To: Alan Maguire
Cc: Martin KaFai Lau, bpf, linux-arch, Andrii Nakryiko, linux-kernel,
Nathan Chancellor, Andrew Morton, Nicolas Schier, linux-kbuild
On Thu, Sep 12, 2024 at 2:25 AM Alan Maguire <alan.maguire@oracle.com> wrote:
>
> On 11/09/2024 12:03, 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@gmail.com/
> >
> > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
>
> Nice cleanup! For the series
>
> Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
>
> One small thing below..
>
> > ---
> >
> > 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.
> >
>
> One thing we lose from the change below is an explicit message about the
> minimal pahole version required. While it is codified in the
> dependendencies, given that we used to loudly warn about this,
> would it make sense to note it in the help text here; just a sentence
> like "BTF generation requires pahole v1.16 or later."? Thanks!
How about this help message?
help
Generate deduplicated BTF type information from DWARF debug info.
Turning this on requires pahole v1.16 or later (v1.21 or later
for DWARF 5), which will convert DWARF type info into equivalent
deduplicated BTF type info.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-09-12 0:46 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-11 11:03 [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Masahiro Yamada
2024-09-11 11:03 ` [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug Masahiro Yamada
2024-09-11 17:25 ` Alan Maguire
2024-09-12 0:45 ` Masahiro Yamada
2024-09-11 21:07 ` Andrii Nakryiko
2024-09-11 21:08 ` Nathan Chancellor
2024-09-11 11:03 ` [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version Masahiro Yamada
2024-09-11 21:08 ` Andrii Nakryiko
2024-09-11 21:10 ` Nathan Chancellor
2024-09-11 21:02 ` [PATCH 1/3] btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh Nathan Chancellor
2024-09-11 21:05 ` Andrii Nakryiko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox