Rust fixes for v6.11
- 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. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPjU5OPd5QIZ9jqqOGXyLc2htIW0FAma/h9sACgkQGXyLc2ht IW1pww/+OqaCo5lINZxaY9LKSX5Clm0eKESuXbeEW74Oqojhhv9daarTBgPH+0oO yhs0UdWN2jacT31sDDSIpn2bswBPA07jY4D4J5MTmJEqEafLXLNzgFb+I9rcK/Kr if2GoeVxyWMKvUCbZu6XQ+PRVJ078YwrSS2eaGASqecQRt+khQZ0MH1EGQD986qg 0Vtfd50p7MsVI9SyHUxazsUyV9FRvRgUUha6uPDB9dGCsP+GTYBFhJO+1s7vfb2I quc3QaQoR5y9mjU7XtsDq5rLhgxxV1VKfODlYHlW8bh+Z33zwfFeheEgi114nfVa DOy2jF7yj8f7WJAtDhhvUJCuJ7G1H2/B3Bx20esiV6u4WhgSZvoYwNxGgBEGw3CM ujanA7/kuX3ZibyiBzEvhy03l1RqaBTaf307LJ1hV4GRyZTmnB8cFtrfRc2gptql vVHAiA7krAQJoTphWbbGIUssZPVEnEVHrsb+kxZZWmSJix0gddNeZVX+XTd9YngJ JaPDlEcdoiv7yQBjQ89b59/o21e5fphxUWCpmOv8Wy3K6ge+teDiF4g/Pgr4JPrY AKllyUAn/LJLkVLgEMCJEWjJ8SAgKnvvJgxO3XodwgRkFzoroiZtX1UtC4iP3v9I /sFhPNP1Ya/AXtU8P6uBwleViVG5Ste2PROgPnjINjik2Acv9EA= =2uNw -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
60cb1da6ed
2
Makefile
2
Makefile
@ -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
|
|||||||
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
|
|||||||
# 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=% \
|
|||||||
-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:
|
|||||||
$(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 @@ macro_rules! define_panicking_intrinsics(
|
|||||||
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 @@ use proc_macro::TokenStream;
|
|||||||
/// - `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():
|
|||||||
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():
|
|||||||
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() {
|
|||||||
"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() {
|
|||||||
"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";
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user