bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] scripts: Exclude Rust CUs with pahole
@ 2023-01-08  2:14 Martin Rodriguez Reboredo
  2023-01-08 14:51 ` Miguel Ojeda
  2023-01-08 15:18 ` Eric Curtin
  0 siblings, 2 replies; 6+ messages in thread
From: Martin Rodriguez Reboredo @ 2023-01-08  2:14 UTC (permalink / raw)
  To: linux-kernel
  Cc: Arnaldo Carvalho de Melo, Eric Curtin, Neal Gompa, bpf,
	rust-for-linux, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Jiri Olsa, Yonghong Song, Miguel Ojeda

Version 1.24 of pahole has the capability to exclude compilation units
(CUs) of specific languages. Rust, as of writing, is not currently
supported by pahole and if it's used with a build that has BTF debugging
enabled it results in malformed kernel and module binaries (see
Rust-for-Linux/linux#735). So it's better for pahole to exclude Rust
CUs until support for it arrives.

Reviewed-by: Eric Curtin <ecurtin@redhat.com>
Tested-by: Eric Curtin <ecurtin@redhat.com>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Tested-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
---
V1 -> V2: Removed dependency on auto.conf

 init/Kconfig              | 2 +-
 lib/Kconfig.debug         | 9 +++++++++
 scripts/Makefile.modfinal | 4 ++++
 scripts/link-vmlinux.sh   | 4 ++++
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/init/Kconfig b/init/Kconfig
index 694f7c160c9c..360aef8d7292 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1913,7 +1913,7 @@ config RUST
 	depends on !MODVERSIONS
 	depends on !GCC_PLUGINS
 	depends on !RANDSTRUCT
-	depends on !DEBUG_INFO_BTF
+	depends on !DEBUG_INFO_BTF || PAHOLE_HAS_LANG_EXCLUDE
 	select CONSTRUCTORS
 	help
 	  Enables Rust support in the kernel.
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index ea4c903c9868..d473d491e709 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -364,6 +364,15 @@ config PAHOLE_HAS_BTF_TAG
 	  btf_decl_tag) or not. Currently only clang compiler implements
 	  these attributes, so make the config depend on CC_IS_CLANG.
 
+config PAHOLE_HAS_LANG_EXCLUDE
+	def_bool PAHOLE_VERSION >= 124
+	help
+	  Support for the --lang_exclude flag which makes pahole exclude
+	  compilation units from the supplied language. Used in Kbuild to
+	  omit Rust CUs which are not supported in version 1.24 of pahole,
+	  otherwise it would emit malformed kernel and module binaries when
+	  using DEBUG_INFO_BTF_MODULES.
+
 config DEBUG_INFO_BTF_MODULES
 	def_bool y
 	depends on DEBUG_INFO_BTF && MODULES && PAHOLE_HAS_SPLIT_BTF
diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal
index 25bedd83644b..a880f2d6918f 100644
--- a/scripts/Makefile.modfinal
+++ b/scripts/Makefile.modfinal
@@ -30,6 +30,10 @@ quiet_cmd_cc_o_c = CC [M]  $@
 
 ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
 
+ifdef CONFIG_RUST
+PAHOLE_FLAGS += --lang_exclude=rust
+endif
+
 quiet_cmd_ld_ko_o = LD [M]  $@
       cmd_ld_ko_o +=							\
 	$(LD) -r $(KBUILD_LDFLAGS)					\
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
index 918470d768e9..69eb0bea89bf 100755
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -122,6 +122,10 @@ gen_btf()
 		return 1
 	fi
 
+	if is_enabled CONFIG_RUST; then
+		PAHOLE_FLAGS="${PAHOLE_FLAGS} --lang_exclude=rust"
+	fi
+
 	vmlinux_link ${1}
 
 	info "BTF" ${2}
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-01-11 15:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-08  2:14 [PATCH v2] scripts: Exclude Rust CUs with pahole Martin Rodriguez Reboredo
2023-01-08 14:51 ` Miguel Ojeda
2023-01-08 15:18 ` Eric Curtin
2023-01-08 19:19   ` Eric Curtin
2023-01-11 15:02     ` Martin Rodriguez Reboredo
2023-01-11 15:23       ` Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).