Skip to content

Commit e90f97c

Browse files
nbdd0121ojeda
authored andcommitted
kbuild: rust: add CONFIG_RUSTC_CLANG_LLVM_COMPATIBLE
This config detects if Rust and Clang have matching LLVM major version. All IR or bitcode operations (e.g. LTO) rely on LLVM major version to be matching, otherwise it may generate errors, or worse, miscompile silently due to change of IR semantics. It's usually suggested to use the exact same LLVM version, but this can be difficult to guarantee. Rust's suggestion [1] is also major-version only, so I think this check is sufficient for the kernel. Link: https://doc.rust-lang.org/rustc/linker-plugin-lto.html [1] Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org> Signed-off-by: Gary Guo <gary@garyguo.net> Signed-off-by: Matthew Maurer <mmaurer@google.com> Signed-off-by: Alice Ryhl <aliceryhl@google.com> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Nicolas Schier <nsc@kernel.org> Tested-by: Nicolas Schier <nsc@kernel.org> Tested-by: Andreas Hindborg <a.hindborg@kernel.org> Link: https://patch.msgid.link/20260203-inline-helpers-v2-1-beb8547a03c9@google.com [ Fixed typo. - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
1 parent 889c8c9 commit e90f97c

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

init/Kconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ config RUSTC_LLVM_VERSION
8282
int
8383
default $(rustc-llvm-version)
8484

85+
config RUSTC_LLVM_MAJOR_VERSION
86+
int
87+
default $(shell,expr $(rustc-llvm-version) / 10000)
88+
89+
config RUSTC_CLANG_LLVM_COMPATIBLE
90+
bool
91+
default y if CC_IS_CLANG && RUSTC_LLVM_MAJOR_VERSION = $(shell,expr $(cc-version) / 10000)
92+
help
93+
This indicates whether Rust and Clang use LLVM of the same major
94+
version.
95+
96+
Operations involving handling LLVM IR or bitcode (e.g. cross-language
97+
LTO) require the same LLVM major version to work properly. For best
98+
compatibility it is recommended that the exact same LLVM is used.
99+
85100
config ARCH_HAS_CC_CAN_LINK
86101
bool
87102

0 commit comments

Comments
 (0)