Update to 1.77.2.

Resolves: RHEL-30084
This commit is contained in:
Josh Stone 2024-04-19 16:25:43 -07:00
parent d1dcdd39b0
commit ebd4ff1cf1
15 changed files with 1048 additions and 99 deletions

2
.gitignore vendored
View File

@ -413,3 +413,5 @@
/rustc-1.75.0-src.tar.xz /rustc-1.75.0-src.tar.xz
/rustc-1.76.0-src.tar.xz /rustc-1.76.0-src.tar.xz
/wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz /wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz
/rustc-1.77.0-src.tar.xz
/rustc-1.77.2-src.tar.xz

View File

@ -0,0 +1,51 @@
From fb4d9ee194e4e6488dcbf9a7e4e16bb1e65ce5f2 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Mon, 8 Apr 2024 15:04:44 -0700
Subject: [PATCH] Fix UI tests with dist-vendored dependencies
There is already a workaround in `compiletest` to deal with custom
`CARGO_HOME` using `-Zignore-directory-in-diagnostics-source-blocks={}`.
A similar need exists when dependencies come from the local `vendor`
directory, which distro builds often use, so now we ignore that too.
Also, `issue-21763.rs` was normalizing `hashbrown-` paths, presumably
expecting a version suffix, but the vendored path doesn't include the
version. Now that matches `[\\/]hashbrown` instead.
(cherry picked from commit f7b2e37f7232540d9f2b2dc6e33597fbb74f4f63)
---
src/tools/compiletest/src/runtest.rs | 5 +++++
tests/ui/issues/issue-21763.rs | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
index 8be4def15ded..644775c0385c 100644
--- a/src/tools/compiletest/src/runtest.rs
+++ b/src/tools/compiletest/src/runtest.rs
@@ -2362,6 +2362,11 @@ fn make_compile_args(
"ignore-directory-in-diagnostics-source-blocks={}",
home::cargo_home().expect("failed to find cargo home").to_str().unwrap()
));
+ // Similarly, vendored sources shouldn't be shown when running from a dist tarball.
+ rustc.arg("-Z").arg(format!(
+ "ignore-directory-in-diagnostics-source-blocks={}",
+ self.config.find_rust_src_root().unwrap().join("vendor").display(),
+ ));
// Optionally prevent default --sysroot if specified in test compile-flags.
if !self.props.compile_flags.iter().any(|flag| flag.starts_with("--sysroot"))
diff --git a/tests/ui/issues/issue-21763.rs b/tests/ui/issues/issue-21763.rs
index 38103ff4f9c8..cc1a00687b30 100644
--- a/tests/ui/issues/issue-21763.rs
+++ b/tests/ui/issues/issue-21763.rs
@@ -1,6 +1,6 @@
// Regression test for HashMap only impl'ing Send/Sync if its contents do
-// normalize-stderr-test: "\S+hashbrown-\S+" -> "$$HASHBROWN_SRC_LOCATION"
+// normalize-stderr-test: "\S+[\\/]hashbrown\S+" -> "$$HASHBROWN_SRC_LOCATION"
use std::collections::HashMap;
use std::rc::Rc;
--
2.44.0

View File

@ -0,0 +1,233 @@
From 29ed7749a3a0e4399b91b3d4198891a4d861f105 Mon Sep 17 00:00:00 2001
From: Josh Stone <cuviper@gmail.com>
Date: Tue, 16 Apr 2024 16:45:59 -0700
Subject: [PATCH] The `multiple_unsafe_ops_per_block` test needs `asm!`
(cherry picked from commit 245fbeef49c2395471498d20e67f4edf4222c865)
---
tests/ui/multiple_unsafe_ops_per_block.rs | 1 +
tests/ui/multiple_unsafe_ops_per_block.stderr | 58 +++++++++----------
2 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/tests/ui/multiple_unsafe_ops_per_block.rs b/tests/ui/multiple_unsafe_ops_per_block.rs
index 8afb4df20af4..6b8a103d4a94 100644
--- a/tests/ui/multiple_unsafe_ops_per_block.rs
+++ b/tests/ui/multiple_unsafe_ops_per_block.rs
@@ -1,3 +1,4 @@
+//@needs-asm-support
//@aux-build:proc_macros.rs
#![allow(unused)]
#![allow(deref_nullptr)]
diff --git a/tests/ui/multiple_unsafe_ops_per_block.stderr b/tests/ui/multiple_unsafe_ops_per_block.stderr
index 4803a5089ab2..f9b22c68ddb1 100644
--- a/tests/ui/multiple_unsafe_ops_per_block.stderr
+++ b/tests/ui/multiple_unsafe_ops_per_block.stderr
@@ -1,5 +1,5 @@
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:36:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:37:5
|
LL | / unsafe {
LL | | STATIC += 1;
@@ -8,12 +8,12 @@ LL | | }
| |_____^
|
note: modification of a mutable static occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:37:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
|
LL | STATIC += 1;
| ^^^^^^^^^^^
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:39:9
|
LL | not_very_safe();
| ^^^^^^^^^^^^^^^
@@ -21,7 +21,7 @@ LL | not_very_safe();
= help: to override `-D warnings` add `#[allow(clippy::multiple_unsafe_ops_per_block)]`
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:45:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:46:5
|
LL | / unsafe {
LL | | drop(u.u);
@@ -30,18 +30,18 @@ LL | | }
| |_____^
|
note: union field access occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:46:14
+ --> $DIR/multiple_unsafe_ops_per_block.rs:47:14
|
LL | drop(u.u);
| ^^^
note: raw pointer dereference occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:47:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:48:9
|
LL | *raw_ptr();
| ^^^^^^^^^^
error: this `unsafe` block contains 3 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:52:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:53:5
|
LL | / unsafe {
LL | | asm!("nop");
@@ -51,23 +51,23 @@ LL | | }
| |_____^
|
note: inline assembly used here
- --> $DIR/multiple_unsafe_ops_per_block.rs:53:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
|
LL | asm!("nop");
| ^^^^^^^^^^^
note: unsafe method call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
|
LL | sample.not_very_safe();
| ^^^^^^^^^^^^^^^^^^^^^^
note: modification of a mutable static occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:56:9
|
LL | STATIC = 0;
| ^^^^^^^^^^
error: this `unsafe` block contains 6 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:61:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:62:5
|
LL | / unsafe {
LL | | drop(u.u);
@@ -79,55 +79,55 @@ LL | | }
| |_____^
|
note: union field access occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:62:14
+ --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
|
LL | drop(u.u);
| ^^^
note: access of a mutable static occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
+ --> $DIR/multiple_unsafe_ops_per_block.rs:64:14
|
LL | drop(STATIC);
| ^^^^^^
note: unsafe method call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:64:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
|
LL | sample.not_very_safe();
| ^^^^^^^^^^^^^^^^^^^^^^
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
|
LL | not_very_safe();
| ^^^^^^^^^^^^^^^
note: raw pointer dereference occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
|
LL | *raw_ptr();
| ^^^^^^^^^^
note: inline assembly used here
- --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:68:9
|
LL | asm!("nop");
| ^^^^^^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:5
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:14
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:14
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: raw pointer dereference occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:39
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:39
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:123:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:124:5
|
LL | / unsafe {
LL | | x();
@@ -136,18 +136,18 @@ LL | | }
| |_____^
|
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:124:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
|
LL | x();
| ^^^
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:126:9
|
LL | x();
| ^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:134:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:135:9
|
LL | / unsafe {
LL | | T::X();
@@ -156,18 +156,18 @@ LL | | }
| |_________^
|
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:135:13
+ --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
|
LL | T::X();
| ^^^^^^
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
+ --> $DIR/multiple_unsafe_ops_per_block.rs:137:13
|
LL | T::X();
| ^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
- --> $DIR/multiple_unsafe_ops_per_block.rs:144:5
+ --> $DIR/multiple_unsafe_ops_per_block.rs:145:5
|
LL | / unsafe {
LL | | x.0();
@@ -176,12 +176,12 @@ LL | | }
| |_____^
|
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:145:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
|
LL | x.0();
| ^^^^^
note: unsafe function call occurs here
- --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
+ --> $DIR/multiple_unsafe_ops_per_block.rs:147:9
|
LL | x.0();
| ^^^^^
--
2.44.0

View File

@ -48,6 +48,18 @@ index 5abfb8162f70..13cb43bda1a4 100644
// We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to // We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to
// enable these CPU features explicitly before their first use, otherwise their instructions // enable these CPU features explicitly before their first use, otherwise their instructions
diff -Naur a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs 2024-03-17 12:03:00.000000000 -0700
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs 2024-03-22 10:02:17.742806274 -0700
@@ -14,7 +14,7 @@
let opts = TargetOptions {
abi: "softfloat".into(),
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
features: "+v8a,+strict-align,-neon,-fp-armv8".into(),
relocation_model: RelocModel::Static,
disable_redzone: true,
-- --
2.41.0 2.41.0

View File

@ -0,0 +1,200 @@
From 56942ed6d13d330facddbd71470a3c115a3fe0d1 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 5 Apr 2024 15:07:58 -0700
Subject: [PATCH] bootstrap: move all of rustc's flags to `rustc_cargo`
This ensures that `RUSTFLAGS` will be consistent between all modes of
building the compiler, so they won't trigger a rebuild by cargo. This
kind of fix was started in #119414 just for LTO flags, but it's
applicable to all kinds of flags that might be configured.
(cherry picked from commit e8fb8c36ca0de817b3d30f603d6d6b3c56e8b0be)
---
src/bootstrap/src/core/build_steps/check.rs | 2 +-
src/bootstrap/src/core/build_steps/compile.rs | 107 +++++++++---------
src/bootstrap/src/core/build_steps/doc.rs | 2 +-
src/bootstrap/src/core/build_steps/test.rs | 2 +-
4 files changed, 59 insertions(+), 54 deletions(-)
diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs
index 5f0afdb1b36c..dd866c2eb0f3 100644
--- a/src/bootstrap/src/core/build_steps/check.rs
+++ b/src/bootstrap/src/core/build_steps/check.rs
@@ -263,7 +263,7 @@ fn run(self, builder: &Builder<'_>) {
target,
cargo_subcommand(builder.kind),
);
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
+ rustc_cargo(builder, &mut cargo, target, &compiler);
// For ./x.py clippy, don't run with --all-targets because
// linting tests and benchmarks can produce very noisy results
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index ddbe18ab8388..607a658617b5 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -898,55 +898,10 @@ fn run(self, builder: &Builder<'_>) -> u32 {
));
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "build");
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
+ rustc_cargo(builder, &mut cargo, target, &compiler);
- if builder.config.rust_profile_use.is_some()
- && builder.config.rust_profile_generate.is_some()
- {
- panic!("Cannot use and generate PGO profiles at the same time");
- }
-
- // With LLD, we can use ICF (identical code folding) to reduce the executable size
- // of librustc_driver/rustc and to improve i-cache utilization.
- //
- // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
- // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
- // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
- // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
- if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
- cargo.rustflag("-Clink-args=-Wl,--icf=all");
- }
-
- let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
- if compiler.stage == 1 {
- cargo.rustflag(&format!("-Cprofile-generate={path}"));
- // Apparently necessary to avoid overflowing the counters during
- // a Cargo build profile
- cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
- true
- } else {
- false
- }
- } else if let Some(path) = &builder.config.rust_profile_use {
- if compiler.stage == 1 {
- cargo.rustflag(&format!("-Cprofile-use={path}"));
- if builder.is_verbose() {
- cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
- }
- true
- } else {
- false
- }
- } else {
- false
- };
- if is_collecting {
- // Ensure paths to Rust sources are relative, not absolute.
- cargo.rustflag(&format!(
- "-Cllvm-args=-static-func-strip-dirname-prefix={}",
- builder.config.src.components().count()
- ));
- }
+ // NB: all RUSTFLAGS should be added to `rustc_cargo()` so they will be
+ // consistently applied by check/doc/test modes too.
for krate in &*self.crates {
cargo.arg("-p").arg(krate);
@@ -997,7 +952,12 @@ fn run(self, builder: &Builder<'_>) -> u32 {
}
}
-pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelection, stage: u32) {
+pub fn rustc_cargo(
+ builder: &Builder<'_>,
+ cargo: &mut Cargo,
+ target: TargetSelection,
+ compiler: &Compiler,
+) {
cargo
.arg("--features")
.arg(builder.rustc_features(builder.kind))
@@ -1008,7 +968,7 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
// We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary
// and may just be a time sink.
- if stage != 0 {
+ if compiler.stage != 0 {
match builder.config.rust_lto {
RustcLto::Thin | RustcLto::Fat => {
// Since using LTO for optimizing dylibs is currently experimental,
@@ -1034,7 +994,52 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
cargo.rustflag("-Clto=off");
}
- rustc_cargo_env(builder, cargo, target, stage);
+ // With LLD, we can use ICF (identical code folding) to reduce the executable size
+ // of librustc_driver/rustc and to improve i-cache utilization.
+ //
+ // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
+ // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
+ // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
+ // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
+ if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
+ cargo.rustflag("-Clink-args=-Wl,--icf=all");
+ }
+
+ if builder.config.rust_profile_use.is_some() && builder.config.rust_profile_generate.is_some() {
+ panic!("Cannot use and generate PGO profiles at the same time");
+ }
+ let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
+ if compiler.stage == 1 {
+ cargo.rustflag(&format!("-Cprofile-generate={path}"));
+ // Apparently necessary to avoid overflowing the counters during
+ // a Cargo build profile
+ cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
+ true
+ } else {
+ false
+ }
+ } else if let Some(path) = &builder.config.rust_profile_use {
+ if compiler.stage == 1 {
+ cargo.rustflag(&format!("-Cprofile-use={path}"));
+ if builder.is_verbose() {
+ cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
+ }
+ true
+ } else {
+ false
+ }
+ } else {
+ false
+ };
+ if is_collecting {
+ // Ensure paths to Rust sources are relative, not absolute.
+ cargo.rustflag(&format!(
+ "-Cllvm-args=-static-func-strip-dirname-prefix={}",
+ builder.config.src.components().count()
+ ));
+ }
+
+ rustc_cargo_env(builder, cargo, target, compiler.stage);
}
pub fn rustc_cargo_env(
diff --git a/src/bootstrap/src/core/build_steps/doc.rs b/src/bootstrap/src/core/build_steps/doc.rs
index 57e63927c95e..e10035f07c05 100644
--- a/src/bootstrap/src/core/build_steps/doc.rs
+++ b/src/bootstrap/src/core/build_steps/doc.rs
@@ -794,7 +794,7 @@ fn run(self, builder: &Builder<'_>) {
cargo.rustdocflag("-Znormalize-docs");
cargo.rustdocflag("--show-type-layout");
cargo.rustdocflag("--generate-link-to-definition");
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
cargo.arg("-Zunstable-options");
cargo.arg("-Zskip-rustdoc-fingerprint");
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
index 04728e2e00dc..c4fdda0a2606 100644
--- a/src/bootstrap/src/core/build_steps/test.rs
+++ b/src/bootstrap/src/core/build_steps/test.rs
@@ -2558,7 +2558,7 @@ fn run(self, builder: &Builder<'_>) {
}
}
Mode::Rustc => {
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
}
_ => panic!("can only test libraries"),
};
--
2.44.0

View File

@ -0,0 +1,82 @@
From 96e7b2767b30c215361d26626ef235f5ec0e8cd5 Mon Sep 17 00:00:00 2001
From: Ralf Jung <post@ralfj.de>
Date: Fri, 16 Feb 2024 10:01:43 +0100
Subject: [PATCH] remove stderr-per-bitwidth from some tests
(cherry picked from commit f68e79dcac3acb635c58ff2fa4178b9a0b040fe4)
---
...ut_ref_in_final_dynamic_check.64bit.stderr | 20 -------------------
.../mut_ref_in_final_dynamic_check.rs | 3 ++-
... => mut_ref_in_final_dynamic_check.stderr} | 8 ++++----
3 files changed, 6 insertions(+), 25 deletions(-)
delete mode 100644 tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
rename tests/ui/consts/const-mut-refs/{mut_ref_in_final_dynamic_check.32bit.stderr => mut_ref_in_final_dynamic_check.stderr} (75%)
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
deleted file mode 100644
index fc68207512c0..000000000000
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
+++ /dev/null
@@ -1,20 +0,0 @@
-error[E0080]: it is undefined behavior to use this value
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
- |
-LL | const A: Option<&mut i32> = helper();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
- |
- = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
- = note: the raw bytes of the constant (size: 8, align: 8) {
- 2a 00 00 00 00 00 00 00 │ *.......
- }
-
-error: encountered dangling pointer in final value of constant
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
- |
-LL | const B: Option<&mut i32> = helper2();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0080`.
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
index 455b557b97c4..b98f4d920694 100644
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
@@ -1,4 +1,5 @@
-// stderr-per-bitwidth
+// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)"
+// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*ALLOC[0-9]+(\+[a-z0-9]+)?(<imm>)?─*╼ )+ *│.*" -> "HEX_DUMP"
#![feature(const_mut_refs)]
#![feature(raw_ref_op)]
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
similarity index 75%
rename from tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
rename to tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
index 87420a037514..bb3c5518680b 100644
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
@@ -1,16 +1,16 @@
error[E0080]: it is undefined behavior to use this value
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:16:1
|
LL | const A: Option<&mut i32> = helper();
| ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
|
= note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
- = note: the raw bytes of the constant (size: 4, align: 4) {
- 2a 00 00 00 │ *...
+ = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) {
+ HEX_DUMP
}
error: encountered dangling pointer in final value of constant
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:23:1
|
LL | const B: Option<&mut i32> = helper2();
| ^^^^^^^^^^^^^^^^^^^^^^^^^
--
2.44.0

View File

@ -0,0 +1,185 @@
From ed8e223cc58103cae0586351fd9113a727523cab Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Thu, 11 Apr 2024 14:58:42 -0700
Subject: [PATCH] test: don't compress test registry crates
They are still nominally gzipped, but using `Compression::none()` makes
them consistent even across zlib and zlib-ng, and this fixes checksum
differences in the testsuite. There is a one-time update of all those
checksums to catch up with this change though.
(cherry picked from commit a70f23c50b61c1a3335f2943375a04ae7abf2fa4)
---
crates/cargo-test-support/src/registry.rs | 2 +-
tests/testsuite/alt_registry.rs | 2 +-
.../cargo_add/locked_unchanged/in/Cargo.lock | 2 +-
.../cargo_add/lockfile_updated/in/Cargo.lock | 2 +-
.../cargo_add/lockfile_updated/out/Cargo.lock | 4 ++--
.../cargo_remove/update_lock_file/in/Cargo.lock | 16 ++++++++--------
.../cargo_remove/update_lock_file/out/Cargo.lock | 12 ++++++------
7 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/crates/cargo-test-support/src/registry.rs b/crates/cargo-test-support/src/registry.rs
index cc51707dbbf9..e27d1e354d7b 100644
--- a/crates/cargo-test-support/src/registry.rs
+++ b/crates/cargo-test-support/src/registry.rs
@@ -1469,7 +1469,7 @@ impl Package {
let dst = self.archive_dst();
t!(fs::create_dir_all(dst.parent().unwrap()));
let f = t!(File::create(&dst));
- let mut a = Builder::new(GzEncoder::new(f, Compression::default()));
+ let mut a = Builder::new(GzEncoder::new(f, Compression::none()));
if !self
.files
diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs
index f286dc018122..42b818493244 100644
--- a/tests/testsuite/alt_registry.rs
+++ b/tests/testsuite/alt_registry.rs
@@ -1466,7 +1466,7 @@ dependencies = [
name = "foo"
version = "0.1.0"
source = "sparse+http://[..]/"
-checksum = "f6a200a9339fef960979d94d5c99cbbfd899b6f5a396a55d9775089119050203""#,
+checksum = "458c1addb23fde7dfbca0410afdbcc0086f96197281ec304d9e0e10def3cb899""#,
);
}
diff --git a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
index 011b335926ee..b88709a9e9be 100644
--- a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
+++ b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
@@ -13,4 +13,4 @@ dependencies = [
name = "my-package"
version = "99999.0.0+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
diff --git a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
index d9bcc988d3f2..d8fa962f3069 100644
--- a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
+++ b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
@@ -14,4 +14,4 @@ dependencies = [
name = "unrelateed-crate"
version = "0.2.0+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
diff --git a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
index 4b5fb465f104..e423b3d1f8b7 100644
--- a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
+++ b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
@@ -14,10 +14,10 @@ dependencies = [
name = "my-package"
version = "99999.0.0+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
[[package]]
name = "unrelateed-crate"
version = "0.2.0+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
diff --git a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
index 2302220f2fb7..a4018e70eb47 100644
--- a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
+++ b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
@@ -19,40 +19,40 @@ dependencies = [
name = "clippy"
version = "0.4.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
[[package]]
name = "docopt"
version = "0.6.2+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
[[package]]
name = "regex"
version = "0.1.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
[[package]]
name = "rustc-serialize"
-version = "0.4.1+my-package"
+version = "0.4.0+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31162e7d23a085553c42dee375787b451a481275473f7779c4a63bcc267a24fd"
+checksum = "48c3645ec42f69a343fbe9734a477ae59448192e779206dbcb1a9c3397563fd8"
[[package]]
name = "semver"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
[[package]]
name = "serde"
version = "1.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
[[package]]
name = "toml"
version = "0.1.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
diff --git a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
index 0946cee47717..af60414ddad2 100644
--- a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
+++ b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
@@ -18,34 +18,34 @@ dependencies = [
name = "clippy"
version = "0.4.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
[[package]]
name = "docopt"
version = "0.6.2+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
[[package]]
name = "regex"
version = "0.1.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
[[package]]
name = "semver"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
[[package]]
name = "serde"
version = "1.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
[[package]]
name = "toml"
version = "0.1.1+my-package"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
--
2.44.0

62
120529.patch Normal file
View File

@ -0,0 +1,62 @@
From 8eb48b4f4c6e3d48f2600159a75184ec4d74b249 Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov@redhat.com>
Date: Wed, 31 Jan 2024 15:08:08 +0100
Subject: [PATCH] Update data layouts in custom target tests for LLVM 18
Fixes https://github.com/rust-lang/rust/issues/120492.
---
tests/run-make/rust-lld-custom-target/custom-target.json | 2 +-
tests/run-make/rustdoc-target-spec-json-path/target.json | 2 +-
tests/run-make/target-specs/my-awesome-platform.json | 2 +-
.../target-specs/my-x86_64-unknown-linux-gnu-platform.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tests/run-make/rust-lld-custom-target/custom-target.json b/tests/run-make/rust-lld-custom-target/custom-target.json
index 7828a99f235c1..e2c64cbdb43c2 100644
--- a/tests/run-make/rust-lld-custom-target/custom-target.json
+++ b/tests/run-make/rust-lld-custom-target/custom-target.json
@@ -2,7 +2,7 @@
"arch": "x86_64",
"cpu": "x86-64",
"crt-static-respected": true,
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
+ "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",
"dynamic-linking": true,
"env": "gnu",
"has-rpath": true,
diff --git a/tests/run-make/rustdoc-target-spec-json-path/target.json b/tests/run-make/rustdoc-target-spec-json-path/target.json
index 34357182c205e..c478f1196fae0 100644
--- a/tests/run-make/rustdoc-target-spec-json-path/target.json
+++ b/tests/run-make/rustdoc-target-spec-json-path/target.json
@@ -2,7 +2,7 @@
"arch": "x86_64",
"cpu": "x86-64",
"crt-static-respected": true,
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
+ "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",
"dynamic-linking": true,
"env": "gnu",
"executables": true,
diff --git a/tests/run-make/target-specs/my-awesome-platform.json b/tests/run-make/target-specs/my-awesome-platform.json
index 00de3de05f07a..1673ef7bd54d1 100644
--- a/tests/run-make/target-specs/my-awesome-platform.json
+++ b/tests/run-make/target-specs/my-awesome-platform.json
@@ -1,5 +1,5 @@
{
- "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128",
+ "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",
"linker-flavor": "gcc",
"llvm-target": "i686-unknown-linux-gnu",
"target-endian": "little",
diff --git a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
index 6d5e964ed4fee..0cafce15a9fef 100644
--- a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
+++ b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
@@ -1,6 +1,6 @@
{
"pre-link-args": {"gcc": ["-m64"]},
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
+ "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",
"linker-flavor": "gcc",
"llvm-target": "x86_64-unknown-linux-gnu",
"target-endian": "little",

55
121088.patch Normal file
View File

@ -0,0 +1,55 @@
From 369fff6c0640fe89be9b915adaa83e66a022e00d Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov@redhat.com>
Date: Wed, 14 Feb 2024 16:26:20 +0100
Subject: [PATCH] Implicitly enable evex512 if avx512 is enabled
LLVM 18 requires the evex512 feature to allow use of zmm registers.
LLVM automatically sets it when using a generic CPU, but not when
`-C target-cpu` is specified. This will result either in backend
legalization crashes, or code unexpectedly using ymm instead of
zmm registers.
For now, make sure that `avx512*` features imply `evex512`. Long
term we'll probably have to deal with the AVX10 mess somehow.
---
compiler/rustc_codegen_llvm/src/llvm_util.rs | 4 ++++
tests/ui/asm/x86_64/evex512-implicit-feature.rs | 15 +++++++++++++++
2 files changed, 19 insertions(+)
create mode 100644 tests/ui/asm/x86_64/evex512-implicit-feature.rs
diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs
index e48479c8da279..54e8ed85e3250 100644
--- a/compiler/rustc_codegen_llvm/src/llvm_util.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs
@@ -266,6 +266,10 @@ pub fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> LLVMFeature<'a> {
("riscv32" | "riscv64", "fast-unaligned-access") if get_version().0 <= 17 => {
LLVMFeature::new("unaligned-scalar-mem")
}
+ // For LLVM 18, enable the evex512 target feature if a avx512 target feature is enabled.
+ ("x86", s) if get_version().0 >= 18 && s.starts_with("avx512") => {
+ LLVMFeature::with_dependency(s, TargetFeatureFoldStrength::EnableOnly("evex512"))
+ }
(_, s) => LLVMFeature::new(s),
}
}
diff --git a/tests/ui/asm/x86_64/evex512-implicit-feature.rs b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
new file mode 100644
index 0000000000000..a15060857eccb
--- /dev/null
+++ b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
@@ -0,0 +1,15 @@
+// build-pass
+// only-x86_64
+// compile-flags: --crate-type=lib -C target-cpu=skylake
+
+#![feature(avx512_target_feature)]
+#![feature(stdsimd)]
+
+use std::arch::x86_64::*;
+
+#[target_feature(enable = "avx512f")]
+#[no_mangle]
+pub unsafe fn test(res: *mut f64, p: *const f64) {
+ let arg = _mm512_load_pd(p);
+ _mm512_store_pd(res, _mm512_fmaddsub_pd(arg, arg, arg));
+}

133
rust.spec
View File

@ -1,5 +1,5 @@
Name: rust Name: rust
Version: 1.76.0 Version: 1.77.2
Release: 1%{?dist} Release: 1%{?dist}
Summary: The Rust Programming Language Summary: The Rust Programming Language
License: (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-DFS-2016) License: (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-DFS-2016)
@ -14,9 +14,9 @@ ExclusiveArch: %{rust_arches}
# To bootstrap from scratch, set the channel and date from src/stage0.json # To bootstrap from scratch, set the channel and date from src/stage0.json
# e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13 # e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13
# or nightly wants some beta-YYYY-MM-DD # or nightly wants some beta-YYYY-MM-DD
%global bootstrap_version 1.75.0 %global bootstrap_version 1.76.0
%global bootstrap_channel 1.75.0 %global bootstrap_channel 1.76.0
%global bootstrap_date 2023-12-28 %global bootstrap_date 2024-02-08
# Only the specified arches will use bootstrap binaries. # Only the specified arches will use bootstrap binaries.
# NOTE: Those binaries used to be uploaded with every new release, but that was # NOTE: Those binaries used to be uploaded with every new release, but that was
@ -37,6 +37,11 @@ ExclusiveArch: %{rust_arches}
%global extra_targets x86_64-unknown-none x86_64-unknown-uefi %global extra_targets x86_64-unknown-none x86_64-unknown-uefi
%endif %endif
%endif %endif
%ifarch aarch64
%if 0%{?fedora} || 0%{?rhel} >= 10
%global extra_targets aarch64-unknown-none-softfloat
%endif
%endif
%global all_targets %{?mingw_targets} %{?wasm_targets} %{?extra_targets} %global all_targets %{?mingw_targets} %{?wasm_targets} %{?extra_targets}
%define target_enabled() %{lua: %define target_enabled() %{lua:
print(string.find(rpm.expand(" %{all_targets} "), rpm.expand(" %1 "), 1, true) or 0) print(string.find(rpm.expand(" %{all_targets} "), rpm.expand(" %1 "), 1, true) or 0)
@ -63,13 +68,15 @@ ExclusiveArch: %{rust_arches}
# is insufficient. Rust currently requires LLVM 15.0+. # is insufficient. Rust currently requires LLVM 15.0+.
%global min_llvm_version 15.0.0 %global min_llvm_version 15.0.0
%global bundled_llvm_version 17.0.6 %global bundled_llvm_version 17.0.6
#global llvm_compat_version 17
%global llvm llvm%{?llvm_compat_version}
%bcond_with bundled_llvm %bcond_with bundled_llvm
# Requires stable libgit2 1.7, and not the next minor soname change. # Requires stable libgit2 1.7, and not the next minor soname change.
# This needs to be consistent with the bindings in vendor/libgit2-sys. # This needs to be consistent with the bindings in vendor/libgit2-sys.
%global min_libgit2_version 1.7.1 %global min_libgit2_version 1.7.2
%global next_libgit2_version 1.8.0~ %global next_libgit2_version 1.8.0~
%global bundled_libgit2_version 1.7.1 %global bundled_libgit2_version 1.7.2
%if 0%{?fedora} >= 39 %if 0%{?fedora} >= 39
%bcond_with bundled_libgit2 %bcond_with bundled_libgit2
%else %else
@ -83,9 +90,20 @@ ExclusiveArch: %{rust_arches}
%bcond_with disabled_libssh2 %bcond_with disabled_libssh2
%endif %endif
%if 0%{?__isa_bits} == 32
# Reduce rustc's own debuginfo and optimizations to conserve 32-bit memory. # Reduce rustc's own debuginfo and optimizations to conserve 32-bit memory.
# e.g. https://github.com/rust-lang/rust/issues/45854 # e.g. https://github.com/rust-lang/rust/issues/45854
%global reduced_debuginfo 0
%if 0%{?__isa_bits} == 32
%global reduced_debuginfo 1
%endif
# Also on current riscv64 hardware, although future hardware will be
# able to handle it.
# e.g. http://fedora.riscv.rocks/koji/buildinfo?buildID=249870
%ifarch riscv64
%global reduced_debuginfo 1
%endif
%if 0%{?reduced_debuginfo}
%global enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 %global enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2
%global enable_rust_opts --set rust.codegen-units-std=1 %global enable_rust_opts --set rust.codegen-units-std=1
%bcond_with rustc_pgo %bcond_with rustc_pgo
@ -124,7 +142,26 @@ Patch4: 0001-bootstrap-allow-disabling-target-self-contained.patch
Patch5: 0002-set-an-external-library-path-for-wasm32-wasi.patch Patch5: 0002-set-an-external-library-path-for-wasm32-wasi.patch
# We don't want to use the bundled library in libsqlite3-sys # We don't want to use the bundled library in libsqlite3-sys
Patch6: rustc-1.76.0-unbundle-sqlite.patch Patch6: rustc-1.77.0-unbundle-sqlite.patch
# Backports of fixes for LLVM 18 compatibility
Patch7: 120529.patch
Patch8: 121088.patch
# https://github.com/rust-lang/rust/pull/123520
Patch9: 0001-bootstrap-move-all-of-rustc-s-flags-to-rustc_cargo.patch
# https://github.com/rust-lang/rust/pull/123652
Patch10: 0001-Fix-UI-tests-with-dist-vendored-dependencies.patch
# https://github.com/rust-lang/rust/pull/121179 (partial)
Patch11: 0001-remove-stderr-per-bitwidth-from-some-tests.patch
# https://github.com/rust-lang/cargo/pull/13744
Patch12: 0001-test-don-t-compress-test-registry-crates.patch
# https://github.com/rust-lang/rust-clippy/pull/12682
Patch13: 0001-The-multiple_unsafe_ops_per_block-test-needs-asm.patch
### RHEL-specific patches below ### ### RHEL-specific patches below ###
@ -134,7 +171,7 @@ Source101: cargo_vendor.attr
Source102: cargo_vendor.prov Source102: cargo_vendor.prov
# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
Patch100: rustc-1.76.0-disable-libssh2.patch Patch100: rustc-1.77.0-disable-libssh2.patch
# Get the Rust triple for any arch. # Get the Rust triple for any arch.
%{lua: function rust_triple(arch) %{lua: function rust_triple(arch)
@ -228,10 +265,9 @@ BuildRequires: ninja-build
Provides: bundled(llvm) = %{bundled_llvm_version} Provides: bundled(llvm) = %{bundled_llvm_version}
%else %else
BuildRequires: cmake >= 3.5.1 BuildRequires: cmake >= 3.5.1
%if %defined llvm %if %defined llvm_compat_version
%global llvm_root %{_libdir}/%{llvm} %global llvm_root %{_libdir}/%{llvm}
%else %else
%global llvm llvm
%global llvm_root %{_prefix} %global llvm_root %{_prefix}
%endif %endif
BuildRequires: %{llvm}-devel >= %{min_llvm_version} BuildRequires: %{llvm}-devel >= %{min_llvm_version}
@ -313,7 +349,7 @@ find '%{buildroot}%{rustlibdir}'/wasm*/lib -type f -regex '.*\\.\\(a\\|rlib\\)'
%endif %endif
# For profiler_builtins # For profiler_builtins
BuildRequires: compiler-rt BuildRequires: compiler-rt%{?llvm_compat_version}
# This component was removed as of Rust 1.69.0. # This component was removed as of Rust 1.69.0.
# https://github.com/rust-lang/rust/pull/101841 # https://github.com/rust-lang/rust/pull/101841
@ -399,6 +435,12 @@ Requires: lld
%target_description x86_64-unknown-uefi embedded %target_description x86_64-unknown-uefi embedded
%endif %endif
%if %target_enabled aarch64-unknown-none-softfloat
%target_package aarch64-unknown-none-softfloat
Requires: lld
%target_description aarch64-unknown-none-softfloat embedded
%endif
%package debugger-common %package debugger-common
Summary: Common debugger pretty printers for Rust Summary: Common debugger pretty printers for Rust
@ -570,6 +612,13 @@ rm -rf %{wasi_libc_dir}/dlmalloc/
%patch -P5 -p1 %patch -P5 -p1
%endif %endif
%patch -P6 -p1 %patch -P6 -p1
%patch -P7 -p1
%patch -P8 -p1
%patch -P9 -p1
%patch -P10 -p1
%patch -P11 -p1
%patch -P12 -p1 -d src/tools/cargo
%patch -P13 -p1 -d src/tools/clippy
%if %with disabled_libssh2 %if %with disabled_libssh2
%patch -P100 -p1 %patch -P100 -p1
@ -696,12 +745,17 @@ fi
%endif %endif
# Find the compiler-rt library for the Rust profiler_builtins crate. # Find the compiler-rt library for the Rust profiler_builtins crate.
%if %defined llvm_compat_version
# clang_resource_dir is not defined for compat builds.
%define profiler /usr/lib/clang/%{llvm_compat_version}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a
%else
%if 0%{?clang_major_version} >= 17 %if 0%{?clang_major_version} >= 17
%define profiler %{clang_resource_dir}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a %define profiler %{clang_resource_dir}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a
%else %else
# The exact profiler path is version dependent.. # The exact profiler path is version dependent..
%define profiler %(echo %{_libdir}/clang/??/lib/libclang_rt.profile-*.a) %define profiler %(echo %{_libdir}/clang/??/lib/libclang_rt.profile-*.a)
%endif %endif
%endif
test -r "%{profiler}" test -r "%{profiler}"
%configure --disable-option-checking \ %configure --disable-option-checking \
@ -729,6 +783,7 @@ test -r "%{profiler}"
--set build.doc-stage=2 \ --set build.doc-stage=2 \
--set build.install-stage=2 \ --set build.install-stage=2 \
--set build.test-stage=2 \ --set build.test-stage=2 \
--set build.optimized-compiler-builtins=false \
--enable-extended \ --enable-extended \
--tools=cargo,clippy,rls,rust-analyzer,rustfmt,src \ --tools=cargo,clippy,rls,rust-analyzer,rustfmt,src \
--enable-vendor \ --enable-vendor \
@ -738,31 +793,32 @@ test -r "%{profiler}"
--release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}" --release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}"
%global __x %{__python3} ./x.py %global __x %{__python3} ./x.py
%global __xk %{__x} --keep-stage=0 --keep-stage=1
%if %with rustc_pgo %if %with rustc_pgo
# Build the compiler with profile instrumentation # Build the compiler with profile instrumentation
PROFRAW="$PWD/build/profiles" %define profraw $PWD/build/profiles
PROFDATA="$PWD/build/rustc.profdata" %define profdata $PWD/build/rustc.profdata
mkdir -p "$PROFRAW" mkdir -p "%{profraw}"
%{__x} build -j "$ncpus" sysroot --rust-profile-generate="$PROFRAW" %{__x} build -j "$ncpus" sysroot --rust-profile-generate="%{profraw}"
# Build cargo as a workload to generate compiler profiles # Build cargo as a workload to generate compiler profiles
env LLVM_PROFILE_FILE="$PROFRAW/default_%%m_%%p.profraw" %{__xk} build cargo env LLVM_PROFILE_FILE="%{profraw}/default_%%m_%%p.profraw" \
llvm-profdata merge -o "$PROFDATA" "$PROFRAW" %{__x} --keep-stage=0 --keep-stage=1 build cargo
rm -r "$PROFRAW" build/%{rust_triple}/stage2*/ # Finalize the profile data and clean up the raw files
# Rebuild the compiler using the profile data %{llvm_root}/bin/llvm-profdata merge -o "%{profdata}" "%{profraw}"
%{__x} build -j "$ncpus" sysroot --rust-profile-use="$PROFDATA" rm -r "%{profraw}" build/%{rust_triple}/stage2*/
%else # Redefine the macro to use that profile data from now on
# Build the compiler without PGO %global __x %{__x} --rust-profile-use="%{profdata}"
%{__x} build -j "$ncpus" sysroot
%endif %endif
# Build the compiler normally (with or without PGO)
%{__x} build -j "$ncpus" sysroot
# Build everything else normally # Build everything else normally
%{__xk} build %{__x} build
%{__xk} doc %{__x} doc
for triple in %{?all_targets} ; do for triple in %{?all_targets} ; do
%{__xk} build --target=$triple std %{__x} build --target=$triple std
done done
%install %install
@ -771,10 +827,10 @@ done
%endif %endif
%{export_rust_env} %{export_rust_env}
DESTDIR=%{buildroot} %{__xk} install DESTDIR=%{buildroot} %{__x} install
for triple in %{?all_targets} ; do for triple in %{?all_targets} ; do
DESTDIR=%{buildroot} %{__xk} install --target=$triple std DESTDIR=%{buildroot} %{__x} install --target=$triple std
done done
# The rls stub doesn't have an install target, but we can just copy it. # The rls stub doesn't have an install target, but we can just copy it.
@ -886,17 +942,17 @@ rm -rf "$TMP_HELLO"
# Bootstrap is excluded because it's not something we ship, and a lot of its # Bootstrap is excluded because it's not something we ship, and a lot of its
# tests are geared toward the upstream CI environment. # tests are geared toward the upstream CI environment.
%{__xk} test --no-fail-fast --skip src/bootstrap || : %{__x} test --no-fail-fast --skip src/bootstrap || :
rm -rf "./build/%{rust_triple}/test/" rm -rf "./build/%{rust_triple}/test/"
%{__xk} test --no-fail-fast cargo || : %{__x} test --no-fail-fast cargo || :
rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/"
%{__xk} test --no-fail-fast clippy || : %{__x} test --no-fail-fast clippy || :
%{__xk} test --no-fail-fast rust-analyzer || : %{__x} test --no-fail-fast rust-analyzer || :
%{__xk} test --no-fail-fast rustfmt || : %{__x} test --no-fail-fast rustfmt || :
%ldconfig_scriptlets %ldconfig_scriptlets
@ -965,6 +1021,10 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/"
%target_files x86_64-unknown-uefi %target_files x86_64-unknown-uefi
%endif %endif
%if %target_enabled aarch64-unknown-none-softfloat
%target_files aarch64-unknown-none-softfloat
%endif
%files debugger-common %files debugger-common
%dir %{rustlibdir} %dir %{rustlibdir}
@ -1039,6 +1099,9 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/"
%changelog %changelog
* Fri Apr 19 2024 Josh Stone <jistone@redhat.com> - 1.77.2-1
- Update to 1.77.2.
* Tue Apr 16 2024 Josh Stone <jistone@redhat.com> - 1.76.0-1 * Tue Apr 16 2024 Josh Stone <jistone@redhat.com> - 1.76.0-1
- Update to 1.76.0. - Update to 1.76.0.
- Sync rust-toolset macros to rust-packaging v25.2 - Sync rust-toolset macros to rust-packaging v25.2

View File

@ -1,42 +0,0 @@
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:25:51.519781381 -0800
@@ -2071,7 +2071,6 @@
dependencies = [
"cc",
"libc",
- "libssh2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -2113,20 +2112,6 @@
"pkg-config",
"vcpkg",
]
-
-[[package]]
-name = "libssh2-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
-]
[[package]]
name = "libz-sys"
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-09 15:23:02.369032291 -0800
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:24:44.015679666 -0800
@@ -40,7 +40,7 @@
curl-sys = "0.4.70"
filetime = "0.2.22"
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
-git2 = "0.18.1"
+git2 = { version = "0.18.1", default-features = false, features = ["https"] }
git2-curl = "0.19.0"
gix = { version = "0.56.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
gix-features-for-configuration-only = { version = "0.35.0", package = "gix-features", features = [ "parallel" ] }

View File

@ -1,21 +0,0 @@
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:36:23.808367445 -0800
@@ -2109,7 +2109,6 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
dependencies = [
- "cc",
"pkg-config",
"vcpkg",
]
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-07 18:12:08.000000000 -0800
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:36:18.534437627 -0800
@@ -73,7 +73,7 @@
pulldown-cmark = { version = "0.9.3", default-features = false }
rand = "0.8.5"
regex = "1.10.2"
-rusqlite = { version = "0.30.0", features = ["bundled"] }
+rusqlite = { version = "0.30.0", features = [] }
rustfix = { version = "0.7.0", path = "crates/rustfix" }
same-file = "1.0.6"
security-framework = "2.9.2"

View File

@ -0,0 +1,44 @@
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-02-14 14:06:05.881165093 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 14:06:27.169456166 +0100
@@ -2072,7 +2072,6 @@ checksum = "ee4126d8b4ee5c9d9ea891dd875c
dependencies = [
"cc",
"libc",
- "libssh2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -2113,20 +2112,6 @@ dependencies = [
"pkg-config",
"vcpkg",
]
-
-[[package]]
-name = "libssh2-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
-]
[[package]]
name = "libz-sys"
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-02-14 14:06:10.400226884 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 14:06:51.225785086 +0100
@@ -44,7 +44,7 @@ curl = "0.4.44"
curl-sys = "0.4.70"
filetime = "0.2.23"
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
-git2 = "0.18.2"
+git2 = { version = "0.18.2", default-features = false, features = ["https"] }
git2-curl = "0.19.0"
gix = { version = "0.57.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
gix-features-for-configuration-only = { version = "0.37.1", package = "gix-features", features = [ "parallel" ] }

View File

@ -0,0 +1,23 @@
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-02-14 13:00:20.318976752 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 13:00:28.447051475 +0100
@@ -2110,7 +2110,6 @@ version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
dependencies = [
- "cc",
"pkg-config",
"vcpkg",
]
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-02-14 13:00:14.942927327 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 13:00:40.688164017 +0100
@@ -77,7 +77,7 @@ proptest = "1.4.0"
pulldown-cmark = { version = "0.9.3", default-features = false }
rand = "0.8.5"
regex = "1.10.2"
-rusqlite = { version = "0.30.0", features = ["bundled"] }
+rusqlite = { version = "0.30.0", features = [] }
rustfix = { version = "0.8.0", path = "crates/rustfix" }
same-file = "1.0.6"
security-framework = "2.9.2"

View File

@ -1,2 +1,2 @@
SHA512 (rustc-1.76.0-src.tar.xz) = 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf SHA512 (rustc-1.77.2-src.tar.xz) = ab099a5e545892f145af9f4c21f41693463248697accf1c92d9afbe6c711639c3859e89c1bb99b84854c462784cc5970fb84dd7c89260ff92174e3684f76920c
SHA512 (wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz) = 56306817a6d683aeaf61c3376700804f143b9be101729693c1c88666ea201f02a3e7a3b32150f688a784ac4aae30e46bdbe3fc79a1a9c62e7b460d11ad509045 SHA512 (wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz) = 56306817a6d683aeaf61c3376700804f143b9be101729693c1c88666ea201f02a3e7a3b32150f688a784ac4aae30e46bdbe3fc79a1a9c62e7b460d11ad509045