From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
To: masahiroy@kernel.org
Cc: linux-kernel@vger.kernel.org, Jiri Slaby <jslaby@suse.cz>,
Nathan Chancellor <nathan@kernel.org>,
Nicolas Schier <nicolas@fjasle.eu>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>,
linux-kbuild@vger.kernel.org, bpf@vger.kernel.org,
shung-hsi.yu@suse.com, msuchanek@suse.com
Subject: [RFC] kbuild: bpf: Do not run pahole with -j on 32bit userspace
Date: Tue, 20 Aug 2024 10:59:50 +0200 [thread overview]
Message-ID: <20240820085950.200358-1-jirislaby@kernel.org> (raw)
From: Jiri Slaby <jslaby@suse.cz>
== WARNING ==
This is only a PoC. There are deficiencies like CROSS_COMPILE or LLVM
are completely unhandled.
The simple version is just do there:
ifeq ($(CONFIG_64BIT,y)
but it has its own deficiencies, of course.
So any ideas, inputs?
== WARNING ==
When pahole is run with -j on 32bit userspace (32bit pahole in
particular), it randomly fails with OOM:
> btf_encoder__tag_kfuncs: Failed to get ELF section(62) data: out of memory.
> btf_encoder__encode: failed to tag kfuncs!
or simply SIGSEGV (failed to allocate the btf encoder).
It very depends on how many threads are created.
So do not invoke pahole with -j on 32bit.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Fixes: b4f72786429c ("scripts/pahole-flags.sh: Parse DWARF and generate BTF with multithreading.")
Closes: https://bugzilla.suse.com/show_bug.cgi?id=1229450
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Martin KaFai Lau <martin.lau@linux.dev>
Cc: Eduard Zingerman <eddyz87@gmail.com>
Cc: Song Liu <song@kernel.org>
Cc: Yonghong Song <yonghong.song@linux.dev>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Stanislav Fomichev <sdf@fomichev.me>
Cc: Hao Luo <haoluo@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: linux-kbuild@vger.kernel.org
Cc: bpf@vger.kernel.org
Cc: shung-hsi.yu@suse.com
Cc: msuchanek@suse.com
---
init/Kconfig | 4 ++++
scripts/Makefile.btf | 2 ++
scripts/pahole-class.sh | 21 +++++++++++++++++++++
3 files changed, 27 insertions(+)
create mode 100644 scripts/pahole-class.sh
diff --git a/init/Kconfig b/init/Kconfig
index f36ca8a0e209..f5e80497eef0 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -113,6 +113,10 @@ config PAHOLE_VERSION
int
default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE))
+config PAHOLE_CLASS
+ string
+ default $(shell,$(srctree)/scripts/pahole-class.sh $(PAHOLE))
+
config CONSTRUCTORS
bool
diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf
index b75f09f3f424..f7de8e922bce 100644
--- a/scripts/Makefile.btf
+++ b/scripts/Makefile.btf
@@ -12,7 +12,9 @@ endif
pahole-flags-$(call test-ge, $(pahole-ver), 121) += --btf_gen_floats
+ifeq ($(CONFIG_PAHOLE_CLASS),ELF64)
pahole-flags-$(call test-ge, $(pahole-ver), 122) += -j
+endif
pahole-flags-$(call test-ge, $(pahole-ver), 125) += --skip_encoding_btf_inconsistent_proto --btf_gen_optimized
diff --git a/scripts/pahole-class.sh b/scripts/pahole-class.sh
new file mode 100644
index 000000000000..d15a92077f76
--- /dev/null
+++ b/scripts/pahole-class.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+#
+# Usage: $ ./pahole-class.sh pahole
+#
+# Prints pahole's ELF class, such as ELF64
+
+if [ ! -x "$(command -v "$@")" ]; then
+ echo 0
+ exit 1
+fi
+
+PAHOLE="$(which "$@")"
+CLASS="$(readelf -h "$PAHOLE" 2>/dev/null | sed -n 's/.*Class: *// p')"
+
+# Scripts like scripts/dummy-tools/pahole
+if [ -n "$CLASS" ]; then
+ echo "$CLASS"
+else
+ echo ELF64
+fi
--
2.46.0
next reply other threads:[~2024-08-20 8:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 8:59 Jiri Slaby (SUSE) [this message]
2024-08-20 9:08 ` [RFC] kbuild: bpf: Do not run pahole with -j on 32bit userspace Jiri Slaby
2024-08-20 14:33 ` Jiri Olsa
2024-08-21 5:32 ` Jiri Slaby
2024-08-21 6:40 ` Jiri Slaby
2024-08-21 7:29 ` Jiri Slaby
2024-08-22 3:55 ` Shung-Hsi Yu
2024-08-22 15:24 ` Arnaldo Carvalho de Melo
2024-08-26 8:57 ` Jiri Slaby
2024-08-26 17:03 ` Arnaldo Carvalho de Melo
2024-08-26 18:42 ` Sedat Dilek
2024-08-26 18:48 ` Phil Auld
2024-08-26 20:04 ` Arnaldo Carvalho de Melo
2024-08-26 22:07 ` Andrii Nakryiko
2024-08-27 8:37 ` Jiri Slaby
2024-09-04 6:06 ` Jiri Slaby
2024-08-26 20:02 ` Arnaldo Carvalho de Melo
2024-08-26 10:18 ` Sedat Dilek
2024-09-25 8:17 ` 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=20240820085950.200358-1-jirislaby@kernel.org \
--to=jirislaby@kernel.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=jslaby@suse.cz \
--cc=kpsingh@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=masahiroy@kernel.org \
--cc=msuchanek@suse.com \
--cc=nathan@kernel.org \
--cc=nicolas@fjasle.eu \
--cc=sdf@fomichev.me \
--cc=shung-hsi.yu@suse.com \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/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.