btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh
Subsystems (4)
PATCH 1/3 btf: remove redundant CONFIG_BPF test in scripts/link-vmlinux.sh
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.
---
scripts/link-vmlinux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/link-vmlinux.sh +1 -1
@@ -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
Signature · 1 line
2.43.0
PATCH 2/3 btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
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/[email protected]/
---
lib/Kconfig.debug | 3 ++- scripts/link-vmlinux.sh | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-)
lib/Kconfig.debug +2 -1
@@ -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
scripts/link-vmlinux.sh +0 -12
@@ -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}
Signature · 1 line
2.43.0
Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
Quoted 20 lines · Masahiro Yamada
When
DEBUG_INFO_DWARF5is selected, pahole 1.21+ is required to enableDEBUG_INFO_BTF.When
DEBUG_INFO_DWARF4orDEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis selected,DEBUG_INFO_BTFcan be enabled without pahole installed, but a build error will occur inscripts/link-vmlinux.sh:LD .tmp_vmlinux1
BTF: .tmp_vmlinux1: pahole (pahole) is not available Failed to generate BTF for vmlinux
Try to disableCONFIG_DEBUG_INFO_BTFWe did not guard
DEBUG_INFO_BTFbyPAHOLE_VERSIONwhen previously discussed [1].However, commit
613fe1692377("kbuild: AddCONFIG_PAHOLE_VERSION") addedCONFIG_PAHOLE_VERSIONat all. Now several CONFIG options, as well as the combination ofDEBUG_INFO_BTFandDEBUG_INFO_DWARF5, are guarded byPAHOLE_VERSION.
Quoted 8 lines
The remaining compile-time check in
scripts/link-vmlinux.shnow appears to be an awkward inconsistency.This commit adopts Nathan's original work.
[1]: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by Masahiro Yamada <[email protected]>
Nice cleanup! For the series
One small thing below..
Quoted 14 lines
---
lib/Kconfig.debug | 3 ++- scripts/link-vmlinux.sh | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-)lib/Kconfig.debug +0
-0@@ -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
lib/Kconfig.debug config DEBUG_INFO_BTF · line 390
Quoted 10 lines
lib/Kconfig.debug +2
-1+ 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
Quoted 26 lines
lib/Kconfig.debug +0
-0config PAHOLE_HAS_SPLIT_BTFscripts/link-vmlinux.sh +0
-12@@ -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}
Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
Quoted 59 lines · Alan Maguire
Quoted 20 lines · Masahiro Yamada
When
DEBUG_INFO_DWARF5is selected, pahole 1.21+ is required to enableDEBUG_INFO_BTF.When
DEBUG_INFO_DWARF4orDEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis selected,DEBUG_INFO_BTFcan be enabled without pahole installed, but a build error will occur inscripts/link-vmlinux.sh:LD .tmp_vmlinux1
BTF: .tmp_vmlinux1: pahole (pahole) is not available Failed to generate BTF for vmlinux
Try to disableCONFIG_DEBUG_INFO_BTFWe did not guard
DEBUG_INFO_BTFbyPAHOLE_VERSIONwhen previously discussed [1].However, commit
613fe1692377("kbuild: AddCONFIG_PAHOLE_VERSION") addedCONFIG_PAHOLE_VERSIONat all. Now several CONFIG options, as well as the combination ofDEBUG_INFO_BTFandDEBUG_INFO_DWARF5, are guarded byPAHOLE_VERSION.Quoted 8 lines
The remaining compile-time check in
scripts/link-vmlinux.shnow appears to be an awkward inconsistency.This commit adopts Nathan's original work.
[1]: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by Masahiro Yamada <[email protected]>Nice cleanup! For the series
Reviewed-by Alan Maguire <[email protected]>One small thing below..
Quoted 22 lines
---
lib/Kconfig.debug | 3 ++- scripts/link-vmlinux.sh | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-)lib/Kconfig.debug +2
-1@@ -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
Quoted 8 lines
lib/Kconfig.debug config DEBUG_INFO_BTF · line 390
Quoted 2 lines
lib/Kconfig.debug +0
-0DWARF 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.
Signature · 2 lines
Best Regards Masahiro Yamada
Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
In reply to Masahiro YamadaQuoted 24 lines · Masahiro Yamada
When
DEBUG_INFO_DWARF5is selected, pahole 1.21+ is required to enableDEBUG_INFO_BTF.When
DEBUG_INFO_DWARF4orDEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis selected,DEBUG_INFO_BTFcan be enabled without pahole installed, but a build error will occur inscripts/link-vmlinux.sh:LD .tmp_vmlinux1
BTF: .tmp_vmlinux1: pahole (pahole) is not available Failed to generate BTF for vmlinux
Try to disableCONFIG_DEBUG_INFO_BTFWe did not guard
DEBUG_INFO_BTFbyPAHOLE_VERSIONwhen previously discussed [1].However, commit
613fe1692377("kbuild: AddCONFIG_PAHOLE_VERSION") addedCONFIG_PAHOLE_VERSIONat all. Now several CONFIG options, as well as the combination ofDEBUG_INFO_BTFandDEBUG_INFO_DWARF5, are guarded byPAHOLE_VERSION.The remaining compile-time check in
scripts/link-vmlinux.shnow appears to be an awkward inconsistency.
Quoted 7 lines
This commit adopts Nathan's original work.
[1]: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by Masahiro Yamada <[email protected]>---
LGTM
Quoted 51 lines
lib/Kconfig.debug | 3 ++- scripts/link-vmlinux.sh | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-)lib/Kconfig.debug +2
-1@@ -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_BTFscripts/link-vmlinux.sh +0
-13@@ -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
Re: [PATCH 2/3] btf: move pahole check in scripts/link-vmlinux.sh to lib/Kconfig.debug
In reply to Masahiro YamadaQuoted 20 lines · Masahiro Yamada
When
DEBUG_INFO_DWARF5is selected, pahole 1.21+ is required to enableDEBUG_INFO_BTF.When
DEBUG_INFO_DWARF4orDEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis selected,DEBUG_INFO_BTFcan be enabled without pahole installed, but a build error will occur inscripts/link-vmlinux.sh:LD .tmp_vmlinux1
BTF: .tmp_vmlinux1: pahole (pahole) is not available Failed to generate BTF for vmlinux
Try to disableCONFIG_DEBUG_INFO_BTFWe did not guard
DEBUG_INFO_BTFbyPAHOLE_VERSIONwhen previously discussed [1].However, commit
613fe1692377("kbuild: AddCONFIG_PAHOLE_VERSION") addedCONFIG_PAHOLE_VERSIONat all. Now several CONFIG options, as well as the combination ofDEBUG_INFO_BTFandDEBUG_INFO_DWARF5, are guarded byPAHOLE_VERSION.
Quoted 8 lines
The remaining compile-time check in
scripts/link-vmlinux.shnow appears to be an awkward inconsistency.This commit adopts Nathan's original work.
[1]: https://lore.kernel.org/lkml/[email protected]/
Signed-off-by Masahiro Yamada <[email protected]>
Quoted 53 lines
---
lib/Kconfig.debug | 3 ++- scripts/link-vmlinux.sh | 12 ------------ 2 files changed, 2 insertions(+), 13 deletions(-)lib/Kconfig.debug +2
-1@@ -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_BTFscripts/link-vmlinux.sh +0
-12@@ -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}Signature · 1 line
2.43.0
PATCH 3/3 btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
In reply to Masahiro YamadaAs 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+.)
---
lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
lib/Kconfig.debug +1 -1
@@ -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
Signature · 1 line
2.43.0
Re: [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
Quoted 5 lines · Masahiro Yamada
As described in commit
42d9b379e3e1("lib/Kconfig.debug: Allow BTF + DWARF5 with pahole 1.21+"), the combination ofCONFIG_DEBUG_INFO_BTFandCONFIG_DEBUG_INFO_DWARF5requires pahole 1.21+.
Quoted 9 lines
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_BTFandCONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis 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 <[email protected]>---
Make sense
Quoted 19 lines
lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)lib/Kconfig.debug +1
-2@@ -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
Re: [PATCH 3/3] btf: require pahole 1.21+ for DEBUG_INFO_BTF with default DWARF version
In reply to Masahiro YamadaQuoted 11 lines · Masahiro Yamada
As described in commit
42d9b379e3e1("lib/Kconfig.debug: Allow BTF + DWARF5 with pahole 1.21+"), the combination ofCONFIG_DEBUG_INFO_BTFandCONFIG_DEBUG_INFO_DWARF5requires 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_BTFandCONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULTis 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 <[email protected]>
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 :)
Quoted 21 lines
---
lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)lib/Kconfig.debug +1
-1@@ -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 helpSignature · 1 line
2.43.0
Quoted 6 lines · Masahiro Yamada
CONFIG_DEBUG_INFO_BTFdepends onCONFIG_BPF_SYSCALL, which in turn selectsCONFIG_BPF.When
CONFIG_DEBUG_INFO_BTF=y,CONFIG_BPF=yis always met.Signed-off-by Masahiro Yamada <[email protected]>
Quoted 21 lines
---
scripts/link-vmlinux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)scripts/link-vmlinux.sh +1
-1@@ -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 fiSignature · 1 line
2.43.0
Quoted 4 lines · Masahiro Yamada
CONFIG_DEBUG_INFO_BTFdepends onCONFIG_BPF_SYSCALL, which in turn selectsCONFIG_BPF.
Quoted 8 lines
When
CONFIG_DEBUG_INFO_BTF=y,CONFIG_BPF=yis always met.Signed-off-by Masahiro Yamada <[email protected]>---
scripts/link-vmlinux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
LGTM
Quoted 16 lines
scripts/link-vmlinux.sh +1
-2@@ -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