summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorGary Guo <gary@garyguo.net>2022-11-10 17:41:37 +0100
committerMiguel Ojeda <ojeda@kernel.org>2022-12-04 01:59:16 +0100
commitecaa6ddff2fd843c0236a931bcc62bf239956617 (patch)
treee7a1b32960bd4ec652dd2e8dc34e60e9d62d289d /scripts
parentef9e37973c3a50497c943e70d577dad10a8e41f2 (diff)
downloadlinux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.tar.gz
linux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.tar.bz2
linux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.zip
rust: add `build_error` crate
The `build_error` crate provides a function `build_error` which will panic at compile-time if executed in const context and, by default, will cause a build error if not executed at compile time and the optimizer does not optimise away the call. The `CONFIG_RUST_BUILD_ASSERT_ALLOW` kernel option allows to relax the default build failure and convert it to a runtime check. If the runtime check fails, `panic!` will be called. Its functionality will be exposed to users as a couple macros in the `kernel` crate in the following patch, thus some documentation here refers to them for simplicity. Signed-off-by: Gary Guo <gary@garyguo.net> Reviewed-by: Wei Liu <wei.liu@kernel.org> [Reworded, adapted for upstream and applied latest changes] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/generate_rust_analyzer.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py
index 75bb611bd751..ecc7ea9a4dcf 100755
--- a/scripts/generate_rust_analyzer.py
+++ b/scripts/generate_rust_analyzer.py
@@ -68,6 +68,12 @@ def generate_crates(srctree, objtree, sysroot_src):
crates[-1]["proc_macro_dylib_path"] = "rust/libmacros.so"
append_crate(
+ "build_error",
+ srctree / "rust" / "build_error.rs",
+ ["core", "compiler_builtins"],
+ )
+
+ append_crate(
"bindings",
srctree / "rust"/ "bindings" / "lib.rs",
["core"],
@@ -78,7 +84,7 @@ def generate_crates(srctree, objtree, sysroot_src):
append_crate(
"kernel",
srctree / "rust" / "kernel" / "lib.rs",
- ["core", "alloc", "macros", "bindings"],
+ ["core", "alloc", "macros", "build_error", "bindings"],
cfg=cfg,
)
crates[-1]["source"] = {