Commit 60cb1da6 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'rust-fixes-6.11' of https://github.com/Rust-for-Linux/linux

Pull rust fixes from Miguel Ojeda:

 - Fix '-Os' Rust 1.80.0+ builds adding more intrinsics (also tweaked in
   upstream Rust for the upcoming 1.82.0).

 - Fix support for the latest version of rust-analyzer due to a change
   on rust-analyzer config file semantics (considered a fix since most
   developers use the latest version of the tool, which is the only one
   actually supported by upstream). I am discussing stability of the
   config file with upstream -- they may be able to start versioning it.

 - Fix GCC 14 builds due to '-fmin-function-alignment' not skipped for
   libclang (bindgen).

 - A couple Kconfig fixes around '{RUSTC,BINDGEN}_VERSION_TEXT' to
   suppress error messages in a foreign architecture chroot and to use a
   proper default format.

 - Clean 'rust-analyzer' target warning due to missing recursive make
   invocation mark.

 - Clean Clippy warning due to missing indentation in docs.

 - Clean LLVM 19 build warning due to removed 3dnow feature upstream.

* tag 'rust-fixes-6.11' of https://github.com/Rust-for-Linux/linux:
  rust: x86: remove `-3dnow{,a}` from target features
  kbuild: rust-analyzer: mark `rust_is_available.sh` invocation as recursive
  rust: add intrinsics to fix `-Os` builds
  kbuild: rust: skip -fmin-function-alignment in bindgen flags
  rust: Support latest version of `rust-analyzer`
  rust: macros: indent list item in `module!`'s docs
  rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
  rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
parents 5b179fe0 0eba65f0
...@@ -1963,7 +1963,7 @@ tags TAGS cscope gtags: FORCE ...@@ -1963,7 +1963,7 @@ tags TAGS cscope gtags: FORCE
# Protocol). # Protocol).
PHONY += rust-analyzer PHONY += rust-analyzer
rust-analyzer: rust-analyzer:
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh +$(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
$(Q)$(MAKE) $(build)=rust $@ $(Q)$(MAKE) $(build)=rust $@
# Script to generate missing namespace dependencies # Script to generate missing namespace dependencies
......
...@@ -1920,7 +1920,7 @@ config RUST ...@@ -1920,7 +1920,7 @@ config RUST
config RUSTC_VERSION_TEXT config RUSTC_VERSION_TEXT
string string
depends on RUST depends on RUST
default $(shell,command -v $(RUSTC) >/dev/null 2>&1 && $(RUSTC) --version || echo n) default "$(shell,$(RUSTC) --version 2>/dev/null)"
config BINDGEN_VERSION_TEXT config BINDGEN_VERSION_TEXT
string string
...@@ -1928,7 +1928,7 @@ config BINDGEN_VERSION_TEXT ...@@ -1928,7 +1928,7 @@ config BINDGEN_VERSION_TEXT
# The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0 # The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0
# (https://github.com/rust-lang/rust-bindgen/pull/2678). It can be removed when # (https://github.com/rust-lang/rust-bindgen/pull/2678). It can be removed when
# the minimum version is upgraded past that (0.69.1 already fixed the issue). # the minimum version is upgraded past that (0.69.1 already fixed the issue).
default $(shell,command -v $(BINDGEN) >/dev/null 2>&1 && $(BINDGEN) --version workaround-for-0.69.0 || echo n) default "$(shell,$(BINDGEN) --version workaround-for-0.69.0 2>/dev/null)"
# #
# Place an empty function call at each tracepoint site. Can be # Place an empty function call at each tracepoint site. Can be
......
...@@ -227,7 +227,7 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \ ...@@ -227,7 +227,7 @@ bindgen_skip_c_flags := -mno-fp-ret-in-387 -mpreferred-stack-boundary=% \
-fno-reorder-blocks -fno-allow-store-data-races -fasan-shadow-offset=% \ -fno-reorder-blocks -fno-allow-store-data-races -fasan-shadow-offset=% \
-fzero-call-used-regs=% -fno-stack-clash-protection \ -fzero-call-used-regs=% -fno-stack-clash-protection \
-fno-inline-functions-called-once -fsanitize=bounds-strict \ -fno-inline-functions-called-once -fsanitize=bounds-strict \
-fstrict-flex-arrays=% \ -fstrict-flex-arrays=% -fmin-function-alignment=% \
--param=% --param asan-% --param=% --param asan-%
# Derived from `scripts/Makefile.clang`. # Derived from `scripts/Makefile.clang`.
...@@ -350,12 +350,12 @@ rust-analyzer: ...@@ -350,12 +350,12 @@ rust-analyzer:
$(Q)$(srctree)/scripts/generate_rust_analyzer.py \ $(Q)$(srctree)/scripts/generate_rust_analyzer.py \
--cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \ --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \
$(realpath $(srctree)) $(realpath $(objtree)) \ $(realpath $(srctree)) $(realpath $(objtree)) \
$(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \ $(rustc_sysroot) $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \
$(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json
redirect-intrinsics = \ redirect-intrinsics = \
__addsf3 __eqsf2 __gesf2 __lesf2 __ltsf2 __mulsf3 __nesf2 __unordsf2 \ __addsf3 __eqsf2 __extendsfdf2 __gesf2 __lesf2 __ltsf2 __mulsf3 __nesf2 __truncdfsf2 __unordsf2 \
__adddf3 __ledf2 __ltdf2 __muldf3 __unorddf2 \ __adddf3 __eqdf2 __ledf2 __ltdf2 __muldf3 __unorddf2 \
__muloti4 __multi3 \ __muloti4 __multi3 \
__udivmodti4 __udivti3 __umodti3 __udivmodti4 __udivti3 __umodti3
......
...@@ -40,16 +40,19 @@ pub extern "C" fn $ident() { ...@@ -40,16 +40,19 @@ pub extern "C" fn $ident() {
define_panicking_intrinsics!("`f32` should not be used", { define_panicking_intrinsics!("`f32` should not be used", {
__addsf3, __addsf3,
__eqsf2, __eqsf2,
__extendsfdf2,
__gesf2, __gesf2,
__lesf2, __lesf2,
__ltsf2, __ltsf2,
__mulsf3, __mulsf3,
__nesf2, __nesf2,
__truncdfsf2,
__unordsf2, __unordsf2,
}); });
define_panicking_intrinsics!("`f64` should not be used", { define_panicking_intrinsics!("`f64` should not be used", {
__adddf3, __adddf3,
__eqdf2,
__ledf2, __ledf2,
__ltdf2, __ltdf2,
__muldf3, __muldf3,
......
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
/// - `license`: ASCII string literal of the license of the kernel module (required). /// - `license`: ASCII string literal of the license of the kernel module (required).
/// - `alias`: array of ASCII string literals of the alias names of the kernel module. /// - `alias`: array of ASCII string literals of the alias names of the kernel module.
/// - `firmware`: array of ASCII string literals of the firmware files of /// - `firmware`: array of ASCII string literals of the firmware files of
/// the kernel module. /// the kernel module.
#[proc_macro] #[proc_macro]
pub fn module(ts: TokenStream) -> TokenStream { pub fn module(ts: TokenStream) -> TokenStream {
module::module(ts) module::module(ts)
......
...@@ -145,6 +145,7 @@ def main(): ...@@ -145,6 +145,7 @@ def main():
parser.add_argument('--cfgs', action='append', default=[]) parser.add_argument('--cfgs', action='append', default=[])
parser.add_argument("srctree", type=pathlib.Path) parser.add_argument("srctree", type=pathlib.Path)
parser.add_argument("objtree", type=pathlib.Path) parser.add_argument("objtree", type=pathlib.Path)
parser.add_argument("sysroot", type=pathlib.Path)
parser.add_argument("sysroot_src", type=pathlib.Path) parser.add_argument("sysroot_src", type=pathlib.Path)
parser.add_argument("exttree", type=pathlib.Path, nargs="?") parser.add_argument("exttree", type=pathlib.Path, nargs="?")
args = parser.parse_args() args = parser.parse_args()
...@@ -154,9 +155,12 @@ def main(): ...@@ -154,9 +155,12 @@ def main():
level=logging.INFO if args.verbose else logging.WARNING level=logging.INFO if args.verbose else logging.WARNING
) )
# Making sure that the `sysroot` and `sysroot_src` belong to the same toolchain.
assert args.sysroot in args.sysroot_src.parents
rust_project = { rust_project = {
"crates": generate_crates(args.srctree, args.objtree, args.sysroot_src, args.exttree, args.cfgs), "crates": generate_crates(args.srctree, args.objtree, args.sysroot_src, args.exttree, args.cfgs),
"sysroot_src": str(args.sysroot_src), "sysroot": str(args.sysroot),
} }
json.dump(rust_project, sys.stdout, sort_keys=True, indent=4) json.dump(rust_project, sys.stdout, sort_keys=True, indent=4)
......
...@@ -162,7 +162,7 @@ fn main() { ...@@ -162,7 +162,7 @@ fn main() {
"data-layout", "data-layout",
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
); );
let mut features = "-3dnow,-3dnowa,-mmx,+soft-float".to_string(); let mut features = "-mmx,+soft-float".to_string();
if cfg.has("MITIGATION_RETPOLINE") { if cfg.has("MITIGATION_RETPOLINE") {
features += ",+retpoline-external-thunk"; features += ",+retpoline-external-thunk";
} }
...@@ -179,7 +179,7 @@ fn main() { ...@@ -179,7 +179,7 @@ fn main() {
"data-layout", "data-layout",
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128", "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128",
); );
let mut features = "-3dnow,-3dnowa,-mmx,+soft-float".to_string(); let mut features = "-mmx,+soft-float".to_string();
if cfg.has("MITIGATION_RETPOLINE") { if cfg.has("MITIGATION_RETPOLINE") {
features += ",+retpoline-external-thunk"; features += ",+retpoline-external-thunk";
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment