From: Nathan Chancellor <natechancellor@gmail.com>
To: Masahiro Yamada <masahiroy@kernel.org>,
Michal Marek <michal.lkml@markovi.net>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>
Cc: Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
netdev@vger.kernel.org, bpf@vger.kernel.org,
Nathan Chancellor <natechancellor@gmail.com>,
Sedat Dilek <sedat.dilek@gmail.com>
Subject: [PATCH] bpf: Hoise pahole version checks into Kconfig
Date: Mon, 11 Jan 2021 11:06:09 -0700 [thread overview]
Message-ID: <20210111180609.713998-1-natechancellor@gmail.com> (raw)
After commit da5fb18225b4 ("bpf: Support pre-2.25-binutils objcopy for
vmlinux BTF"), having CONFIG_DEBUG_INFO_BTF enabled but lacking a valid
copy of pahole results in a kernel that will fully compile but fail to
link. The user then has to either install pahole or disable
CONFIG_DEBUG_INFO_BTF and rebuild the kernel but only after their build
has failed, which could have been a significant amount of time depending
on the hardware.
Avoid a poor user experience and require pahole to be installed with an
appropriate version to select and use CONFIG_DEBUG_INFO_BTF, which is
standard for options that require a specific tools version.
Suggested-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
---
MAINTAINERS | 1 +
init/Kconfig | 4 ++++
lib/Kconfig.debug | 6 ++----
scripts/link-vmlinux.sh | 13 -------------
scripts/pahole-version.sh | 16 ++++++++++++++++
5 files changed, 23 insertions(+), 17 deletions(-)
create mode 100755 scripts/pahole-version.sh
diff --git a/MAINTAINERS b/MAINTAINERS
index b8db7637263a..6f6e24285a94 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3282,6 +3282,7 @@ F: net/core/filter.c
F: net/sched/act_bpf.c
F: net/sched/cls_bpf.c
F: samples/bpf/
+F: scripts/pahole-version.sh
F: tools/bpf/
F: tools/lib/bpf/
F: tools/testing/selftests/bpf/
diff --git a/init/Kconfig b/init/Kconfig
index b77c60f8b963..872c61b5d204 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -74,6 +74,10 @@ config TOOLS_SUPPORT_RELR
config CC_HAS_ASM_INLINE
def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
+config PAHOLE_VERSION
+ int
+ default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE))
+
config CONSTRUCTORS
bool
depends on !UML
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 7937265ef879..70c446af9664 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -267,6 +267,7 @@ config DEBUG_INFO_DWARF4
config DEBUG_INFO_BTF
bool "Generate BTF typeinfo"
+ depends on PAHOLE_VERSION >= 116
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
help
@@ -274,12 +275,9 @@ config DEBUG_INFO_BTF
Turning this on expects presence of pahole tool, which will convert
DWARF type info into equivalent deduplicated BTF type info.
-config PAHOLE_HAS_SPLIT_BTF
- def_bool $(success, test `$(PAHOLE) --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/'` -ge "119")
-
config DEBUG_INFO_BTF_MODULES
def_bool y
- depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
+ depends on DEBUG_INFO_BTF && MODULES && PAHOLE_VERSION >= 119
help
Generate compact split BTF type information for kernel modules.
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index 6eded325c837..eef40fa9485d 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -139,19 +139,6 @@ vmlinux_link()
# ${2} - file to dump raw BTF data into
gen_btf()
{
- local pahole_ver
-
- 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
-
vmlinux_link ${1}
info "BTF" ${2}
diff --git a/scripts/pahole-version.sh b/scripts/pahole-version.sh
new file mode 100755
index 000000000000..6de6f734a345
--- /dev/null
+++ b/scripts/pahole-version.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+#
+# Usage: $ ./scripts/pahole-version.sh pahole
+#
+# Print the pahole version as a three digit string
+# such as `119' for pahole v1.19 etc.
+
+pahole="$*"
+
+if ! [ -x "$(command -v $pahole)" ]; then
+ echo 0
+ exit 1
+fi
+
+$pahole --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/'
base-commit: e22d7f05e445165e58feddb4e40cc9c0f94453bc
--
2.30.0
next reply other threads:[~2021-01-11 18:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-11 18:06 Nathan Chancellor [this message]
2021-01-11 19:19 ` [PATCH] bpf: Hoise pahole version checks into Kconfig Masahiro Yamada
2021-01-11 19:34 ` Nathan Chancellor
2021-01-11 19:50 ` Masahiro Yamada
2021-01-11 20:00 ` Nathan Chancellor
2021-01-11 21:24 ` Andrii Nakryiko
2021-01-13 22:38 ` Andrii Nakryiko
2021-01-13 23:07 ` Nathan Chancellor
2021-02-04 7:22 ` Sedat Dilek
2021-01-12 23:43 ` Sedat Dilek
2021-02-04 18:11 ` Sedat Dilek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210111180609.713998-1-natechancellor@gmail.com \
--to=natechancellor@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=john.fastabend@gmail.com \
--cc=kafai@fb.com \
--cc=kpsingh@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
--cc=netdev@vger.kernel.org \
--cc=sedat.dilek@gmail.com \
--cc=songliubraving@fb.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.