import rust-1.55.0-1.module+el8.6.0+13130+6081e3bb
This commit is contained in:
parent
9add913223
commit
60de010dfe
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/rustc-1.51.0-src.tar.xz
|
SOURCES/rustc-1.55.0-src.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
3a88f9fa4c3e0ef74ce8396ad80121fd0b6cb349 SOURCES/rustc-1.51.0-src.tar.xz
|
3fd8c1e1d44f95621499d245d0be00c4945347fb SOURCES/rustc-1.55.0-src.tar.xz
|
||||||
|
26
SOURCES/0001-Use-lld-provided-by-system-for-wasm.patch
Normal file
26
SOURCES/0001-Use-lld-provided-by-system-for-wasm.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 9ac837c237568a6c1c5f0e979fcce208cd9c926a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Mironov <mironov.ivan@gmail.com>
|
||||||
|
Date: Sun, 8 Dec 2019 17:23:08 +0500
|
||||||
|
Subject: [PATCH] Use lld provided by system for wasm
|
||||||
|
|
||||||
|
---
|
||||||
|
compiler/rustc_target/src/spec/wasm_base.rs | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/wasm_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs
|
||||||
|
index 4c954a1e567c..15c4f1bda5eb 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/wasm_base.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/wasm_base.rs
|
||||||
|
@@ -99,8 +99,7 @@ pub fn options() -> TargetOptions {
|
||||||
|
// arguments just yet
|
||||||
|
limit_rdylib_exports: false,
|
||||||
|
|
||||||
|
- // we use the LLD shipped with the Rust toolchain by default
|
||||||
|
- linker: Some("rust-lld".to_owned()),
|
||||||
|
+ linker: Some("lld".to_owned()),
|
||||||
|
lld_flavor: LldFlavor::Wasm,
|
||||||
|
linker_is_gnu: false,
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -1,48 +0,0 @@
|
|||||||
From 852684d306cee955ed751f1e8d8eec6adaecff3b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Joshua Nelson <jyn514@gmail.com>
|
|
||||||
Date: Mon, 8 Feb 2021 22:51:21 -0500
|
|
||||||
Subject: [PATCH] Use format string in bootstrap panic instead of a string
|
|
||||||
directly
|
|
||||||
|
|
||||||
This fixes the following warning when compiling with nightly:
|
|
||||||
|
|
||||||
```
|
|
||||||
warning: panic message is not a string literal
|
|
||||||
--> src/bootstrap/builder.rs:1515:24
|
|
||||||
|
|
|
||||||
1515 | panic!(out);
|
|
||||||
| ^^^
|
|
||||||
|
|
|
||||||
= note: `#[warn(non_fmt_panic)]` on by default
|
|
||||||
= note: this is no longer accepted in Rust 2021
|
|
||||||
help: add a "{}" format string to Display the message
|
|
||||||
|
|
|
||||||
1515 | panic!("{}", out);
|
|
||||||
| ^^^^^
|
|
||||||
help: or use std::panic::panic_any instead
|
|
||||||
|
|
|
||||||
1515 | std::panic::panic_any(out);
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
```
|
|
||||||
|
|
||||||
(cherry picked from commit 31c93397bde772764cda3058e16f9cef61895090)
|
|
||||||
---
|
|
||||||
src/bootstrap/builder.rs | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
|
|
||||||
index f1a160250dbe..0f5fcb4af400 100644
|
|
||||||
--- a/src/bootstrap/builder.rs
|
|
||||||
+++ b/src/bootstrap/builder.rs
|
|
||||||
@@ -1490,7 +1490,7 @@ pub fn ensure<S: Step>(&'a self, step: S) -> S::Output {
|
|
||||||
for el in stack.iter().rev() {
|
|
||||||
out += &format!("\t{:?}\n", el);
|
|
||||||
}
|
|
||||||
- panic!(out);
|
|
||||||
+ panic!("{}", out);
|
|
||||||
}
|
|
||||||
if let Some(out) = self.cache.get(&step) {
|
|
||||||
self.verbose(&format!("{}c {:?}", " ".repeat(stack.len()), step));
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
--- rustc-beta-src/Cargo.lock.orig 2021-03-09 10:30:08.626424998 -0800
|
--- rustc-1.55.0-src/Cargo.lock.orig 2021-09-07 16:33:21.672163689 -0700
|
||||||
+++ rustc-beta-src/Cargo.lock 2021-03-09 10:32:38.096207704 -0800
|
+++ rustc-1.55.0-src/Cargo.lock 2021-09-07 16:33:21.673163668 -0700
|
||||||
@@ -899,7 +899,6 @@
|
@@ -877,7 +877,6 @@
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"libc",
|
"libc",
|
||||||
@ -8,8 +8,8 @@
|
|||||||
"libz-sys",
|
"libz-sys",
|
||||||
"openssl-sys",
|
"openssl-sys",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
@@ -1860,16 +1859,6 @@
|
@@ -1907,16 +1906,6 @@
|
||||||
]
|
checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
-name = "libnghttp2-sys"
|
-name = "libnghttp2-sys"
|
||||||
@ -25,20 +25,20 @@
|
|||||||
name = "libz-sys"
|
name = "libz-sys"
|
||||||
version = "1.1.2"
|
version = "1.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2021-03-05 08:34:15.000000000 -0800
|
--- rustc-1.55.0-src/src/tools/cargo/Cargo.toml.orig 2021-09-07 16:33:21.673163668 -0700
|
||||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2021-03-09 10:32:38.096207704 -0800
|
+++ rustc-1.55.0-src/src/tools/cargo/Cargo.toml 2021-09-07 16:34:59.637068004 -0700
|
||||||
@@ -25,7 +25,7 @@
|
@@ -25,7 +25,7 @@
|
||||||
|
cargo-util = { path = "crates/cargo-util", version = "0.1.1" }
|
||||||
crates-io = { path = "crates/crates-io", version = "0.33.0" }
|
crates-io = { path = "crates/crates-io", version = "0.33.0" }
|
||||||
crossbeam-utils = "0.8"
|
crossbeam-utils = "0.8"
|
||||||
crypto-hash = "0.3.1"
|
-curl = { version = "0.4.38", features = ["http2"] }
|
||||||
-curl = { version = "0.4.23", features = ["http2"] }
|
+curl = { version = "0.4.38", features = [] }
|
||||||
+curl = { version = "0.4.23", features = [] }
|
curl-sys = "0.4.45"
|
||||||
curl-sys = "0.4.22"
|
env_logger = "0.9.0"
|
||||||
env_logger = "0.8.1"
|
|
||||||
pretty_env_logger = { version = "0.4", optional = true }
|
pretty_env_logger = { version = "0.4", optional = true }
|
||||||
--- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig 2021-03-05 08:34:15.000000000 -0800
|
--- rustc-1.55.0-src/src/tools/cargo/src/cargo/core/package.rs.orig 2021-09-06 11:42:51.000000000 -0700
|
||||||
+++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs 2021-03-09 10:32:38.096207704 -0800
|
+++ rustc-1.55.0-src/src/tools/cargo/src/cargo/core/package.rs 2021-09-07 16:33:21.674163646 -0700
|
||||||
@@ -412,14 +412,8 @@
|
@@ -417,14 +417,8 @@
|
||||||
// Also note that pipelining is disabled as curl authors have indicated
|
// Also note that pipelining is disabled as curl authors have indicated
|
||||||
// that it's buggy, and we've empirically seen that it's buggy with HTTP
|
// that it's buggy, and we've empirically seen that it's buggy with HTTP
|
||||||
// proxies.
|
// proxies.
|
||||||
@ -46,7 +46,7 @@
|
|||||||
- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true);
|
- let multiplexing = config.http_config()?.multiplexing.unwrap_or(true);
|
||||||
- multi
|
- multi
|
||||||
- .pipelining(false, multiplexing)
|
- .pipelining(false, multiplexing)
|
||||||
- .chain_err(|| "failed to enable multiplexing/pipelining in curl")?;
|
- .with_context(|| "failed to enable multiplexing/pipelining in curl")?;
|
||||||
-
|
-
|
||||||
- // let's not flood crates.io with connections
|
- // let's not flood crates.io with connections
|
||||||
- multi.set_max_host_connections(2)?;
|
- multi.set_max_host_connections(2)?;
|
||||||
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
Ok(PackageSet {
|
Ok(PackageSet {
|
||||||
packages: package_ids
|
packages: package_ids
|
||||||
@@ -592,7 +586,7 @@
|
@@ -597,7 +591,7 @@
|
||||||
macro_rules! try_old_curl {
|
macro_rules! try_old_curl {
|
||||||
($e:expr, $msg:expr) => {
|
($e:expr, $msg:expr) => {
|
||||||
let result = $e;
|
let result = $e;
|
898
SOURCES/rustc-1.55.0-llvm-13.patch
Normal file
898
SOURCES/rustc-1.55.0-llvm-13.patch
Normal file
@ -0,0 +1,898 @@
|
|||||||
|
From e84e42e37057d51f68075845c92ad817c1893857 Mon Sep 17 00:00:00 2001
|
||||||
|
From: bors <bors@rust-lang.org>
|
||||||
|
Date: Sat, 21 Aug 2021 09:25:28 +0000
|
||||||
|
Subject: [PATCH] Auto merge of #87570 - nikic:llvm-13, r=nagisa
|
||||||
|
|
||||||
|
Upgrade to LLVM 13
|
||||||
|
|
||||||
|
Work in progress update to LLVM 13. Main changes:
|
||||||
|
|
||||||
|
* InlineAsm diagnostics reported using SrcMgr diagnostic kind are now handled. Previously these used a separate diag handler.
|
||||||
|
* Codegen tests are updated for additional attributes.
|
||||||
|
* Some data layouts have changed.
|
||||||
|
* Switch `#[used]` attribute from `llvm.used` to `llvm.compiler.used` to avoid SHF_GNU_RETAIN flag introduced in https://reviews.llvm.org/D97448, which appears to trigger a bug in older versions of gold.
|
||||||
|
* Set `LLVM_INCLUDE_TESTS=OFF` to avoid Python 3.6 requirement.
|
||||||
|
|
||||||
|
Upstream issues:
|
||||||
|
|
||||||
|
* ~~https://bugs.llvm.org/show_bug.cgi?id=51210 (InlineAsm diagnostic reporting for module asm)~~ Fixed by https://github.com/llvm/llvm-project/commit/1558bb80c01b695ce12642527cbfccf16cf54ece.
|
||||||
|
* ~~https://bugs.llvm.org/show_bug.cgi?id=51476 (Miscompile on AArch64 due to incorrect comparison elimination)~~ Fixed by https://github.com/llvm/llvm-project/commit/81b106584f2baf33e09be2362c35c1bf2f6bfe94.
|
||||||
|
* https://bugs.llvm.org/show_bug.cgi?id=51207 (Can't set custom section flags anymore). Problematic change reverted in our fork, https://reviews.llvm.org/D107216 posted for upstream revert.
|
||||||
|
* https://bugs.llvm.org/show_bug.cgi?id=51211 (Regression in codegen for #83623). This is an optimization regression that we may likely have to eat for this release. The fix for #83623 was based on an incorrect premise, and this needs to be properly addressed in the MergeICmps pass.
|
||||||
|
|
||||||
|
The [compile-time impact](https://perf.rust-lang.org/compare.html?start=ef9549b6c0efb7525c9b012148689c8d070f9bc0&end=0983094463497eec22d550dad25576a894687002) is mixed, but quite positive as LLVM upgrades go.
|
||||||
|
|
||||||
|
The LLVM 13 final release is scheduled for Sep 21st. The current nightly is scheduled for stable release on Oct 21st.
|
||||||
|
|
||||||
|
r? `@ghost`
|
||||||
|
|
||||||
|
(cherry picked from commit db002a06ae9154a35d410550bc5132df883d7baa)
|
||||||
|
---
|
||||||
|
compiler/rustc_codegen_llvm/src/back/write.rs | 43 +--------
|
||||||
|
compiler/rustc_codegen_llvm/src/base.rs | 8 +-
|
||||||
|
compiler/rustc_codegen_llvm/src/consts.rs | 15 ++-
|
||||||
|
compiler/rustc_codegen_llvm/src/context.rs | 55 ++++++++---
|
||||||
|
compiler/rustc_codegen_llvm/src/lib.rs | 2 +-
|
||||||
|
.../rustc_codegen_llvm/src/llvm/diagnostic.rs | 94 +++++++++++++++----
|
||||||
|
compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 7 +-
|
||||||
|
compiler/rustc_codegen_ssa/src/traits/misc.rs | 2 +
|
||||||
|
.../rustc_codegen_ssa/src/traits/statics.rs | 18 ++--
|
||||||
|
compiler/rustc_feature/src/accepted.rs | 2 +-
|
||||||
|
.../rustc_llvm/llvm-wrapper/RustWrapper.cpp | 20 +++-
|
||||||
|
.../src/spec/powerpc64_unknown_linux_gnu.rs | 2 +-
|
||||||
|
.../src/spec/powerpc64_unknown_linux_musl.rs | 2 +-
|
||||||
|
.../src/spec/powerpc64_wrs_vxworks.rs | 2 +-
|
||||||
|
.../src/spec/powerpc64le_unknown_linux_gnu.rs | 2 +-
|
||||||
|
.../spec/powerpc64le_unknown_linux_musl.rs | 2 +-
|
||||||
|
.../src/spec/wasm32_unknown_emscripten.rs | 2 +-
|
||||||
|
.../src/spec/wasm32_unknown_unknown.rs | 2 +-
|
||||||
|
compiler/rustc_target/src/spec/wasm32_wasi.rs | 2 +-
|
||||||
|
.../src/spec/wasm64_unknown_unknown.rs | 2 +-
|
||||||
|
src/bootstrap/native.rs | 1 +
|
||||||
|
src/test/codegen/array-equality.rs | 4 +-
|
||||||
|
.../codegen/issue-83623-SIMD-PartialEq.rs | 46 ---------
|
||||||
|
src/test/codegen/repeat-trusted-len.rs | 2 +-
|
||||||
|
.../coverage-llvmir/Makefile | 2 -
|
||||||
|
.../coverage-llvmir/filecheck.testprog.txt | 18 ++--
|
||||||
|
src/test/ui/llvm-asm/issue-69092.rs | 4 +-
|
||||||
|
src/test/ui/llvm-asm/issue-69092.stderr | 4 +-
|
||||||
|
29 files changed, 200 insertions(+), 167 deletions(-)
|
||||||
|
delete mode 100644 src/test/codegen/issue-83623-SIMD-PartialEq.rs
|
||||||
|
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs
|
||||||
|
index 5b4a187a1d56..791604a18273 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/back/write.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/back/write.rs
|
||||||
|
@@ -296,39 +296,8 @@ fn report_inline_asm(
|
||||||
|
}
|
||||||
|
let (cgcx, _) = *(user as *const (&CodegenContext<LlvmCodegenBackend>, &Handler));
|
||||||
|
|
||||||
|
- // Recover the post-substitution assembly code from LLVM for better
|
||||||
|
- // diagnostics.
|
||||||
|
- let mut have_source = false;
|
||||||
|
- let mut buffer = String::new();
|
||||||
|
- let mut level = llvm::DiagnosticLevel::Error;
|
||||||
|
- let mut loc = 0;
|
||||||
|
- let mut ranges = [0; 8];
|
||||||
|
- let mut num_ranges = ranges.len() / 2;
|
||||||
|
- let msg = llvm::build_string(|msg| {
|
||||||
|
- buffer = llvm::build_string(|buffer| {
|
||||||
|
- have_source = llvm::LLVMRustUnpackSMDiagnostic(
|
||||||
|
- diag,
|
||||||
|
- msg,
|
||||||
|
- buffer,
|
||||||
|
- &mut level,
|
||||||
|
- &mut loc,
|
||||||
|
- ranges.as_mut_ptr(),
|
||||||
|
- &mut num_ranges,
|
||||||
|
- );
|
||||||
|
- })
|
||||||
|
- .expect("non-UTF8 inline asm");
|
||||||
|
- })
|
||||||
|
- .expect("non-UTF8 SMDiagnostic");
|
||||||
|
-
|
||||||
|
- let source = have_source.then(|| {
|
||||||
|
- let mut spans = vec![InnerSpan::new(loc as usize, loc as usize)];
|
||||||
|
- for i in 0..num_ranges {
|
||||||
|
- spans.push(InnerSpan::new(ranges[i * 2] as usize, ranges[i * 2 + 1] as usize));
|
||||||
|
- }
|
||||||
|
- (buffer, spans)
|
||||||
|
- });
|
||||||
|
-
|
||||||
|
- report_inline_asm(cgcx, msg, level, cookie, source);
|
||||||
|
+ let smdiag = llvm::diagnostic::SrcMgrDiagnostic::unpack(diag);
|
||||||
|
+ report_inline_asm(cgcx, smdiag.message, smdiag.level, cookie, smdiag.source);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe extern "C" fn diagnostic_handler(info: &DiagnosticInfo, user: *mut c_void) {
|
||||||
|
@@ -339,13 +308,7 @@ fn report_inline_asm(
|
||||||
|
|
||||||
|
match llvm::diagnostic::Diagnostic::unpack(info) {
|
||||||
|
llvm::diagnostic::InlineAsm(inline) => {
|
||||||
|
- report_inline_asm(
|
||||||
|
- cgcx,
|
||||||
|
- llvm::twine_to_string(inline.message),
|
||||||
|
- inline.level,
|
||||||
|
- inline.cookie,
|
||||||
|
- None,
|
||||||
|
- );
|
||||||
|
+ report_inline_asm(cgcx, inline.message, inline.level, inline.cookie, inline.source);
|
||||||
|
}
|
||||||
|
|
||||||
|
llvm::diagnostic::Optimization(opt) => {
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/base.rs b/compiler/rustc_codegen_llvm/src/base.rs
|
||||||
|
index cc3cbea4def5..a6bdbd11899d 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/base.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/base.rs
|
||||||
|
@@ -157,16 +157,18 @@ fn module_codegen(tcx: TyCtxt<'_>, cgu_name: Symbol) -> ModuleCodegen<ModuleLlvm
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finalize code coverage by injecting the coverage map. Note, the coverage map will
|
||||||
|
- // also be added to the `llvm.used` variable, created next.
|
||||||
|
+ // also be added to the `llvm.compiler.used` variable, created next.
|
||||||
|
if cx.sess().instrument_coverage() {
|
||||||
|
cx.coverageinfo_finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
- // Create the llvm.used variable
|
||||||
|
- // This variable has type [N x i8*] and is stored in the llvm.metadata section
|
||||||
|
+ // Create the llvm.used and llvm.compiler.used variables.
|
||||||
|
if !cx.used_statics().borrow().is_empty() {
|
||||||
|
cx.create_used_variable()
|
||||||
|
}
|
||||||
|
+ if !cx.compiler_used_statics().borrow().is_empty() {
|
||||||
|
+ cx.create_compiler_used_variable()
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Finalize debuginfo
|
||||||
|
if cx.sess().opts.debuginfo != DebugInfo::None {
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/consts.rs b/compiler/rustc_codegen_llvm/src/consts.rs
|
||||||
|
index 3ca295f4a7e8..e1baf95e1d9e 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/consts.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/consts.rs
|
||||||
|
@@ -474,7 +474,13 @@ fn codegen_static(&self, def_id: DefId, is_mutable: bool) {
|
||||||
|
}
|
||||||
|
|
||||||
|
if attrs.flags.contains(CodegenFnAttrFlags::USED) {
|
||||||
|
- self.add_used_global(g);
|
||||||
|
+ // The semantics of #[used] in Rust only require the symbol to make it into the
|
||||||
|
+ // object file. It is explicitly allowed for the linker to strip the symbol if it
|
||||||
|
+ // is dead. As such, use llvm.compiler.used instead of llvm.used.
|
||||||
|
+ // Additionally, https://reviews.llvm.org/D97448 in LLVM 13 started emitting unique
|
||||||
|
+ // sections with SHF_GNU_RETAIN flag for llvm.used symbols, which may trigger bugs
|
||||||
|
+ // in some versions of the gold linker.
|
||||||
|
+ self.add_compiler_used_global(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -484,4 +490,11 @@ fn add_used_global(&self, global: &'ll Value) {
|
||||||
|
let cast = unsafe { llvm::LLVMConstPointerCast(global, self.type_i8p()) };
|
||||||
|
self.used_statics.borrow_mut().push(cast);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /// Add a global value to a list to be stored in the `llvm.compiler.used` variable,
|
||||||
|
+ /// an array of i8*.
|
||||||
|
+ fn add_compiler_used_global(&self, global: &'ll Value) {
|
||||||
|
+ let cast = unsafe { llvm::LLVMConstPointerCast(global, self.type_i8p()) };
|
||||||
|
+ self.compiler_used_statics.borrow_mut().push(cast);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
index 59259857b4b0..027fb2b7e00c 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/context.rs
|
||||||
|
@@ -74,6 +74,10 @@ pub struct CodegenCx<'ll, 'tcx> {
|
||||||
|
/// See <https://llvm.org/docs/LangRef.html#the-llvm-used-global-variable> for details
|
||||||
|
pub used_statics: RefCell<Vec<&'ll Value>>,
|
||||||
|
|
||||||
|
+ /// Statics that will be placed in the llvm.compiler.used variable
|
||||||
|
+ /// See <https://llvm.org/docs/LangRef.html#the-llvm-compiler-used-global-variable> for details
|
||||||
|
+ pub compiler_used_statics: RefCell<Vec<&'ll Value>>,
|
||||||
|
+
|
||||||
|
pub lltypes: RefCell<FxHashMap<(Ty<'tcx>, Option<VariantIdx>), &'ll Type>>,
|
||||||
|
pub scalar_lltypes: RefCell<FxHashMap<Ty<'tcx>, &'ll Type>>,
|
||||||
|
pub pointee_infos: RefCell<FxHashMap<(Ty<'tcx>, Size), Option<PointeeInfo>>>,
|
||||||
|
@@ -101,10 +105,6 @@ fn to_llvm_tls_model(tls_model: TlsModel) -> llvm::ThreadLocalMode {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-fn strip_powerpc64_vectors(data_layout: String) -> String {
|
||||||
|
- data_layout.replace("-v256:256:256-v512:512:512", "")
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
pub unsafe fn create_module(
|
||||||
|
tcx: TyCtxt<'_>,
|
||||||
|
llcx: &'ll llvm::Context,
|
||||||
|
@@ -116,7 +116,18 @@ pub unsafe fn create_module(
|
||||||
|
|
||||||
|
let mut target_data_layout = sess.target.data_layout.clone();
|
||||||
|
if llvm_util::get_version() < (12, 0, 0) && sess.target.arch == "powerpc64" {
|
||||||
|
- target_data_layout = strip_powerpc64_vectors(target_data_layout);
|
||||||
|
+ target_data_layout = target_data_layout.replace("-v256:256:256-v512:512:512", "");
|
||||||
|
+ }
|
||||||
|
+ if llvm_util::get_version() < (13, 0, 0) {
|
||||||
|
+ if sess.target.arch == "powerpc64" {
|
||||||
|
+ target_data_layout = target_data_layout.replace("-S128", "");
|
||||||
|
+ }
|
||||||
|
+ if sess.target.arch == "wasm32" {
|
||||||
|
+ target_data_layout = "e-m:e-p:32:32-i64:64-n32:64-S128".to_string();
|
||||||
|
+ }
|
||||||
|
+ if sess.target.arch == "wasm64" {
|
||||||
|
+ target_data_layout = "e-m:e-p:64:64-i64:64-n32:64-S128".to_string();
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure the data-layout values hardcoded remain the defaults.
|
||||||
|
@@ -304,6 +315,7 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
|
||||||
|
const_globals: Default::default(),
|
||||||
|
statics_to_rauw: RefCell::new(Vec::new()),
|
||||||
|
used_statics: RefCell::new(Vec::new()),
|
||||||
|
+ compiler_used_statics: RefCell::new(Vec::new()),
|
||||||
|
lltypes: Default::default(),
|
||||||
|
scalar_lltypes: Default::default(),
|
||||||
|
pointee_infos: Default::default(),
|
||||||
|
@@ -326,6 +338,18 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
|
||||||
|
pub fn coverage_context(&'a self) -> Option<&'a coverageinfo::CrateCoverageContext<'ll, 'tcx>> {
|
||||||
|
self.coverage_cx.as_ref()
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ fn create_used_variable_impl(&self, name: &'static CStr, values: &[&'ll Value]) {
|
||||||
|
+ let section = cstr!("llvm.metadata");
|
||||||
|
+ let array = self.const_array(&self.type_ptr_to(self.type_i8()), values);
|
||||||
|
+
|
||||||
|
+ unsafe {
|
||||||
|
+ let g = llvm::LLVMAddGlobal(self.llmod, self.val_ty(array), name.as_ptr());
|
||||||
|
+ llvm::LLVMSetInitializer(g, array);
|
||||||
|
+ llvm::LLVMRustSetLinkage(g, llvm::Linkage::AppendingLinkage);
|
||||||
|
+ llvm::LLVMSetSection(g, section.as_ptr());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
|
@@ -416,6 +440,10 @@ fn used_statics(&self) -> &RefCell<Vec<&'ll Value>> {
|
||||||
|
&self.used_statics
|
||||||
|
}
|
||||||
|
|
||||||
|
+ fn compiler_used_statics(&self) -> &RefCell<Vec<&'ll Value>> {
|
||||||
|
+ &self.compiler_used_statics
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
fn set_frame_pointer_type(&self, llfn: &'ll Value) {
|
||||||
|
attributes::set_frame_pointer_type(self, llfn)
|
||||||
|
}
|
||||||
|
@@ -426,17 +454,14 @@ fn apply_target_cpu_attr(&self, llfn: &'ll Value) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_used_variable(&self) {
|
||||||
|
- let name = cstr!("llvm.used");
|
||||||
|
- let section = cstr!("llvm.metadata");
|
||||||
|
- let array =
|
||||||
|
- self.const_array(&self.type_ptr_to(self.type_i8()), &*self.used_statics.borrow());
|
||||||
|
+ self.create_used_variable_impl(cstr!("llvm.used"), &*self.used_statics.borrow());
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- unsafe {
|
||||||
|
- let g = llvm::LLVMAddGlobal(self.llmod, self.val_ty(array), name.as_ptr());
|
||||||
|
- llvm::LLVMSetInitializer(g, array);
|
||||||
|
- llvm::LLVMRustSetLinkage(g, llvm::Linkage::AppendingLinkage);
|
||||||
|
- llvm::LLVMSetSection(g, section.as_ptr());
|
||||||
|
- }
|
||||||
|
+ fn create_compiler_used_variable(&self) {
|
||||||
|
+ self.create_used_variable_impl(
|
||||||
|
+ cstr!("llvm.compiler.used"),
|
||||||
|
+ &*self.compiler_used_statics.borrow(),
|
||||||
|
+ );
|
||||||
|
}
|
||||||
|
|
||||||
|
fn declare_c_main(&self, fn_type: Self::Type) -> Option<Self::Function> {
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/lib.rs b/compiler/rustc_codegen_llvm/src/lib.rs
|
||||||
|
index aa4db1622b23..1e6e5252b25d 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/lib.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/lib.rs
|
||||||
|
@@ -352,8 +352,8 @@ fn llmod(&self) -> &llvm::Module {
|
||||||
|
impl Drop for ModuleLlvm {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
- llvm::LLVMContextDispose(&mut *(self.llcx as *mut _));
|
||||||
|
llvm::LLVMRustDisposeTargetMachine(&mut *(self.tm as *mut _));
|
||||||
|
+ llvm::LLVMContextDispose(&mut *(self.llcx as *mut _));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/llvm/diagnostic.rs b/compiler/rustc_codegen_llvm/src/llvm/diagnostic.rs
|
||||||
|
index ccd3e42e458f..36aa022d7465 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/llvm/diagnostic.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/llvm/diagnostic.rs
|
||||||
|
@@ -6,7 +6,8 @@
|
||||||
|
use crate::value::Value;
|
||||||
|
use libc::c_uint;
|
||||||
|
|
||||||
|
-use super::{DiagnosticInfo, Twine};
|
||||||
|
+use super::{DiagnosticInfo, SMDiagnostic};
|
||||||
|
+use rustc_span::InnerSpan;
|
||||||
|
|
||||||
|
#[derive(Copy, Clone)]
|
||||||
|
pub enum OptimizationDiagnosticKind {
|
||||||
|
@@ -86,36 +87,91 @@ unsafe fn unpack(kind: OptimizationDiagnosticKind, di: &'ll DiagnosticInfo) -> S
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-#[derive(Copy, Clone)]
|
||||||
|
-pub struct InlineAsmDiagnostic<'ll> {
|
||||||
|
+pub struct SrcMgrDiagnostic {
|
||||||
|
+ pub level: super::DiagnosticLevel,
|
||||||
|
+ pub message: String,
|
||||||
|
+ pub source: Option<(String, Vec<InnerSpan>)>,
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+impl SrcMgrDiagnostic {
|
||||||
|
+ pub unsafe fn unpack(diag: &SMDiagnostic) -> SrcMgrDiagnostic {
|
||||||
|
+ // Recover the post-substitution assembly code from LLVM for better
|
||||||
|
+ // diagnostics.
|
||||||
|
+ let mut have_source = false;
|
||||||
|
+ let mut buffer = String::new();
|
||||||
|
+ let mut level = super::DiagnosticLevel::Error;
|
||||||
|
+ let mut loc = 0;
|
||||||
|
+ let mut ranges = [0; 8];
|
||||||
|
+ let mut num_ranges = ranges.len() / 2;
|
||||||
|
+ let message = super::build_string(|message| {
|
||||||
|
+ buffer = super::build_string(|buffer| {
|
||||||
|
+ have_source = super::LLVMRustUnpackSMDiagnostic(
|
||||||
|
+ diag,
|
||||||
|
+ message,
|
||||||
|
+ buffer,
|
||||||
|
+ &mut level,
|
||||||
|
+ &mut loc,
|
||||||
|
+ ranges.as_mut_ptr(),
|
||||||
|
+ &mut num_ranges,
|
||||||
|
+ );
|
||||||
|
+ })
|
||||||
|
+ .expect("non-UTF8 inline asm");
|
||||||
|
+ })
|
||||||
|
+ .expect("non-UTF8 SMDiagnostic");
|
||||||
|
+
|
||||||
|
+ SrcMgrDiagnostic {
|
||||||
|
+ message,
|
||||||
|
+ level,
|
||||||
|
+ source: have_source.then(|| {
|
||||||
|
+ let mut spans = vec![InnerSpan::new(loc as usize, loc as usize)];
|
||||||
|
+ for i in 0..num_ranges {
|
||||||
|
+ spans.push(InnerSpan::new(ranges[i * 2] as usize, ranges[i * 2 + 1] as usize));
|
||||||
|
+ }
|
||||||
|
+ (buffer, spans)
|
||||||
|
+ }),
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#[derive(Clone)]
|
||||||
|
+pub struct InlineAsmDiagnostic {
|
||||||
|
pub level: super::DiagnosticLevel,
|
||||||
|
pub cookie: c_uint,
|
||||||
|
- pub message: &'ll Twine,
|
||||||
|
- pub instruction: Option<&'ll Value>,
|
||||||
|
+ pub message: String,
|
||||||
|
+ pub source: Option<(String, Vec<InnerSpan>)>,
|
||||||
|
}
|
||||||
|
|
||||||
|
-impl InlineAsmDiagnostic<'ll> {
|
||||||
|
- unsafe fn unpack(di: &'ll DiagnosticInfo) -> Self {
|
||||||
|
+impl InlineAsmDiagnostic {
|
||||||
|
+ unsafe fn unpackInlineAsm(di: &'ll DiagnosticInfo) -> Self {
|
||||||
|
let mut cookie = 0;
|
||||||
|
let mut message = None;
|
||||||
|
- let mut instruction = None;
|
||||||
|
let mut level = super::DiagnosticLevel::Error;
|
||||||
|
|
||||||
|
- super::LLVMRustUnpackInlineAsmDiagnostic(
|
||||||
|
- di,
|
||||||
|
- &mut level,
|
||||||
|
- &mut cookie,
|
||||||
|
- &mut message,
|
||||||
|
- &mut instruction,
|
||||||
|
- );
|
||||||
|
+ super::LLVMRustUnpackInlineAsmDiagnostic(di, &mut level, &mut cookie, &mut message);
|
||||||
|
|
||||||
|
- InlineAsmDiagnostic { level, cookie, message: message.unwrap(), instruction }
|
||||||
|
+ InlineAsmDiagnostic {
|
||||||
|
+ level,
|
||||||
|
+ cookie,
|
||||||
|
+ message: super::twine_to_string(message.unwrap()),
|
||||||
|
+ source: None,
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ unsafe fn unpackSrcMgr(di: &'ll DiagnosticInfo) -> Self {
|
||||||
|
+ let mut cookie = 0;
|
||||||
|
+ let smdiag = SrcMgrDiagnostic::unpack(super::LLVMRustGetSMDiagnostic(di, &mut cookie));
|
||||||
|
+ InlineAsmDiagnostic {
|
||||||
|
+ level: smdiag.level,
|
||||||
|
+ cookie,
|
||||||
|
+ message: smdiag.message,
|
||||||
|
+ source: smdiag.source,
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum Diagnostic<'ll> {
|
||||||
|
Optimization(OptimizationDiagnostic<'ll>),
|
||||||
|
- InlineAsm(InlineAsmDiagnostic<'ll>),
|
||||||
|
+ InlineAsm(InlineAsmDiagnostic),
|
||||||
|
PGO(&'ll DiagnosticInfo),
|
||||||
|
Linker(&'ll DiagnosticInfo),
|
||||||
|
Unsupported(&'ll DiagnosticInfo),
|
||||||
|
@@ -130,7 +186,7 @@ pub unsafe fn unpack(di: &'ll DiagnosticInfo) -> Self {
|
||||||
|
let kind = super::LLVMRustGetDiagInfoKind(di);
|
||||||
|
|
||||||
|
match kind {
|
||||||
|
- Dk::InlineAsm => InlineAsm(InlineAsmDiagnostic::unpack(di)),
|
||||||
|
+ Dk::InlineAsm => InlineAsm(InlineAsmDiagnostic::unpackInlineAsm(di)),
|
||||||
|
|
||||||
|
Dk::OptimizationRemark => {
|
||||||
|
Optimization(OptimizationDiagnostic::unpack(OptimizationRemark, di))
|
||||||
|
@@ -162,6 +218,8 @@ pub unsafe fn unpack(di: &'ll DiagnosticInfo) -> Self {
|
||||||
|
Dk::Linker => Linker(di),
|
||||||
|
Dk::Unsupported => Unsupported(di),
|
||||||
|
|
||||||
|
+ Dk::SrcMgr => InlineAsm(InlineAsmDiagnostic::unpackSrcMgr(di)),
|
||||||
|
+
|
||||||
|
_ => UnknownDiagnostic(di),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
index 68d566cca095..7d5388b9abb8 100644
|
||||||
|
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
|
||||||
|
@@ -490,6 +490,7 @@ pub enum DiagnosticKind {
|
||||||
|
PGOProfile,
|
||||||
|
Linker,
|
||||||
|
Unsupported,
|
||||||
|
+ SrcMgr,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// LLVMRustDiagnosticLevel
|
||||||
|
@@ -2258,13 +2259,17 @@ pub fn LLVMRustUnpackInlineAsmDiagnostic(
|
||||||
|
level_out: &mut DiagnosticLevel,
|
||||||
|
cookie_out: &mut c_uint,
|
||||||
|
message_out: &mut Option<&'a Twine>,
|
||||||
|
- instruction_out: &mut Option<&'a Value>,
|
||||||
|
);
|
||||||
|
|
||||||
|
#[allow(improper_ctypes)]
|
||||||
|
pub fn LLVMRustWriteDiagnosticInfoToString(DI: &DiagnosticInfo, s: &RustString);
|
||||||
|
pub fn LLVMRustGetDiagInfoKind(DI: &DiagnosticInfo) -> DiagnosticKind;
|
||||||
|
|
||||||
|
+ pub fn LLVMRustGetSMDiagnostic(
|
||||||
|
+ DI: &'a DiagnosticInfo,
|
||||||
|
+ cookie_out: &mut c_uint,
|
||||||
|
+ ) -> &'a SMDiagnostic;
|
||||||
|
+
|
||||||
|
pub fn LLVMRustSetInlineAsmDiagnosticHandler(
|
||||||
|
C: &Context,
|
||||||
|
H: InlineAsmDiagHandler,
|
||||||
|
diff --git a/compiler/rustc_codegen_ssa/src/traits/misc.rs b/compiler/rustc_codegen_ssa/src/traits/misc.rs
|
||||||
|
index 46f2adbe5520..4266e42ec2b5 100644
|
||||||
|
--- a/compiler/rustc_codegen_ssa/src/traits/misc.rs
|
||||||
|
+++ b/compiler/rustc_codegen_ssa/src/traits/misc.rs
|
||||||
|
@@ -16,9 +16,11 @@ fn vtables(
|
||||||
|
fn sess(&self) -> &Session;
|
||||||
|
fn codegen_unit(&self) -> &'tcx CodegenUnit<'tcx>;
|
||||||
|
fn used_statics(&self) -> &RefCell<Vec<Self::Value>>;
|
||||||
|
+ fn compiler_used_statics(&self) -> &RefCell<Vec<Self::Value>>;
|
||||||
|
fn set_frame_pointer_type(&self, llfn: Self::Function);
|
||||||
|
fn apply_target_cpu_attr(&self, llfn: Self::Function);
|
||||||
|
fn create_used_variable(&self);
|
||||||
|
+ fn create_compiler_used_variable(&self);
|
||||||
|
/// Declares the extern "C" main function for the entry point. Returns None if the symbol already exists.
|
||||||
|
fn declare_c_main(&self, fn_type: Self::Type) -> Option<Self::Function>;
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_codegen_ssa/src/traits/statics.rs b/compiler/rustc_codegen_ssa/src/traits/statics.rs
|
||||||
|
index 817fc02d166a..a2a3cb56c780 100644
|
||||||
|
--- a/compiler/rustc_codegen_ssa/src/traits/statics.rs
|
||||||
|
+++ b/compiler/rustc_codegen_ssa/src/traits/statics.rs
|
||||||
|
@@ -6,17 +6,15 @@ pub trait StaticMethods: BackendTypes {
|
||||||
|
fn static_addr_of(&self, cv: Self::Value, align: Align, kind: Option<&str>) -> Self::Value;
|
||||||
|
fn codegen_static(&self, def_id: DefId, is_mutable: bool);
|
||||||
|
|
||||||
|
- /// Mark the given global value as "used", to prevent a backend from potentially removing a
|
||||||
|
- /// static variable that may otherwise appear unused.
|
||||||
|
- ///
|
||||||
|
- /// Static variables in Rust can be annotated with the `#[used]` attribute to direct the `rustc`
|
||||||
|
- /// compiler to mark the variable as a "used global".
|
||||||
|
- ///
|
||||||
|
- /// ```no_run
|
||||||
|
- /// #[used]
|
||||||
|
- /// static FOO: u32 = 0;
|
||||||
|
- /// ```
|
||||||
|
+ /// Mark the given global value as "used", to prevent the compiler and linker from potentially
|
||||||
|
+ /// removing a static variable that may otherwise appear unused.
|
||||||
|
fn add_used_global(&self, global: Self::Value);
|
||||||
|
+
|
||||||
|
+ /// Same as add_used_global(), but only prevent the compiler from potentially removing an
|
||||||
|
+ /// otherwise unused symbol. The linker is still permitted to drop it.
|
||||||
|
+ ///
|
||||||
|
+ /// This corresponds to the semantics of the `#[used]` attribute.
|
||||||
|
+ fn add_compiler_used_global(&self, global: Self::Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait StaticBuilderMethods: BackendTypes {
|
||||||
|
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
|
||||||
|
index 95504723e7b2..690a6f541ff3 100644
|
||||||
|
--- a/compiler/rustc_feature/src/accepted.rs
|
||||||
|
+++ b/compiler/rustc_feature/src/accepted.rs
|
||||||
|
@@ -178,7 +178,7 @@ macro_rules! declare_features {
|
||||||
|
/// Allows annotating functions conforming to `fn(&PanicInfo) -> !` with `#[panic_handler]`.
|
||||||
|
/// This defines the behavior of panics.
|
||||||
|
(accepted, panic_handler, "1.30.0", Some(44489), None),
|
||||||
|
- /// Allows `#[used]` to preserve symbols (see llvm.used).
|
||||||
|
+ /// Allows `#[used]` to preserve symbols (see llvm.compiler.used).
|
||||||
|
(accepted, used, "1.30.0", Some(40289), None),
|
||||||
|
/// Allows `crate` in paths.
|
||||||
|
(accepted, crate_in_paths, "1.30.0", Some(45477), None),
|
||||||
|
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
index 4cdc8a4155bc..fa47dc9caa0b 100644
|
||||||
|
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
|
||||||
|
@@ -1114,15 +1114,13 @@ extern "C" void
|
||||||
|
LLVMRustUnpackInlineAsmDiagnostic(LLVMDiagnosticInfoRef DI,
|
||||||
|
LLVMRustDiagnosticLevel *LevelOut,
|
||||||
|
unsigned *CookieOut,
|
||||||
|
- LLVMTwineRef *MessageOut,
|
||||||
|
- LLVMValueRef *InstructionOut) {
|
||||||
|
+ LLVMTwineRef *MessageOut) {
|
||||||
|
// Undefined to call this not on an inline assembly diagnostic!
|
||||||
|
llvm::DiagnosticInfoInlineAsm *IA =
|
||||||
|
static_cast<llvm::DiagnosticInfoInlineAsm *>(unwrap(DI));
|
||||||
|
|
||||||
|
*CookieOut = IA->getLocCookie();
|
||||||
|
*MessageOut = wrap(&IA->getMsgStr());
|
||||||
|
- *InstructionOut = wrap(IA->getInstruction());
|
||||||
|
|
||||||
|
switch (IA->getSeverity()) {
|
||||||
|
case DS_Error:
|
||||||
|
@@ -1165,6 +1163,7 @@ enum class LLVMRustDiagnosticKind {
|
||||||
|
PGOProfile,
|
||||||
|
Linker,
|
||||||
|
Unsupported,
|
||||||
|
+ SrcMgr,
|
||||||
|
};
|
||||||
|
|
||||||
|
static LLVMRustDiagnosticKind toRust(DiagnosticKind Kind) {
|
||||||
|
@@ -1193,6 +1192,10 @@ static LLVMRustDiagnosticKind toRust(DiagnosticKind Kind) {
|
||||||
|
return LLVMRustDiagnosticKind::Linker;
|
||||||
|
case DK_Unsupported:
|
||||||
|
return LLVMRustDiagnosticKind::Unsupported;
|
||||||
|
+#if LLVM_VERSION_GE(13, 0)
|
||||||
|
+ case DK_SrcMgr:
|
||||||
|
+ return LLVMRustDiagnosticKind::SrcMgr;
|
||||||
|
+#endif
|
||||||
|
default:
|
||||||
|
return (Kind >= DK_FirstRemark && Kind <= DK_LastRemark)
|
||||||
|
? LLVMRustDiagnosticKind::OptimizationRemarkOther
|
||||||
|
@@ -1280,6 +1283,17 @@ extern "C" void LLVMRustSetInlineAsmDiagnosticHandler(
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
+extern "C" LLVMSMDiagnosticRef LLVMRustGetSMDiagnostic(
|
||||||
|
+ LLVMDiagnosticInfoRef DI, unsigned *Cookie) {
|
||||||
|
+#if LLVM_VERSION_GE(13, 0)
|
||||||
|
+ llvm::DiagnosticInfoSrcMgr *SM = static_cast<llvm::DiagnosticInfoSrcMgr *>(unwrap(DI));
|
||||||
|
+ *Cookie = SM->getLocCookie();
|
||||||
|
+ return wrap(&SM->getSMDiag());
|
||||||
|
+#else
|
||||||
|
+ report_fatal_error("Shouldn't get called on older versions");
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
extern "C" bool LLVMRustUnpackSMDiagnostic(LLVMSMDiagnosticRef DRef,
|
||||||
|
RustStringRef MessageOut,
|
||||||
|
RustStringRef BufferOut,
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs
|
||||||
|
index 559a1a40868f..f10d4d49bb90 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs
|
||||||
|
@@ -14,7 +14,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "powerpc64-unknown-linux-gnu".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "E-m:e-i64:64-n32:64-v256:256:256-v512:512:512".to_string(),
|
||||||
|
+ data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(),
|
||||||
|
arch: "powerpc64".to_string(),
|
||||||
|
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs
|
||||||
|
index f1190b159aba..611621727bd1 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs
|
||||||
|
@@ -10,7 +10,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "powerpc64-unknown-linux-musl".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "E-m:e-i64:64-n32:64-v256:256:256-v512:512:512".to_string(),
|
||||||
|
+ data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(),
|
||||||
|
arch: "powerpc64".to_string(),
|
||||||
|
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".to_string(), ..base },
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs b/compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs
|
||||||
|
index 3ebc5469e0a8..9c63997ce2f9 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs
|
||||||
|
@@ -10,7 +10,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "powerpc64-unknown-linux-gnu".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "E-m:e-i64:64-n32:64-v256:256:256-v512:512:512".to_string(),
|
||||||
|
+ data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(),
|
||||||
|
arch: "powerpc64".to_string(),
|
||||||
|
options: TargetOptions { endian: Endian::Big, ..base },
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
|
||||||
|
index 76f70e474f07..f645eceadfe3 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
|
||||||
|
@@ -9,7 +9,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "powerpc64le-unknown-linux-gnu".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512".to_string(),
|
||||||
|
+ data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(),
|
||||||
|
arch: "powerpc64".to_string(),
|
||||||
|
options: TargetOptions { mcount: "_mcount".to_string(), ..base },
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs
|
||||||
|
index 42c49103b3b4..934371fb2211 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs
|
||||||
|
@@ -9,7 +9,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "powerpc64le-unknown-linux-musl".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512".to_string(),
|
||||||
|
+ data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(),
|
||||||
|
arch: "powerpc64".to_string(),
|
||||||
|
options: TargetOptions { mcount: "_mcount".to_string(), ..base },
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs b/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs
|
||||||
|
index 302139395d31..86b1a7552335 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs
|
||||||
|
@@ -43,7 +43,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "wasm32-unknown-emscripten".to_string(),
|
||||||
|
pointer_width: 32,
|
||||||
|
- data_layout: "e-m:e-p:32:32-i64:64-n32:64-S128".to_string(),
|
||||||
|
+ data_layout: "e-m:e-p:32:32-i64:64-f128:64-n32:64-S128-ni:1:10:20".to_string(),
|
||||||
|
arch: "wasm32".to_string(),
|
||||||
|
options: opts,
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs
|
||||||
|
index 834c4dbfc05f..134c6803b15d 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs
|
||||||
|
@@ -54,7 +54,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "wasm32-unknown-unknown".to_string(),
|
||||||
|
pointer_width: 32,
|
||||||
|
- data_layout: "e-m:e-p:32:32-i64:64-n32:64-S128".to_string(),
|
||||||
|
+ data_layout: "e-m:e-p:32:32-i64:64-n32:64-S128-ni:1:10:20".to_string(),
|
||||||
|
arch: "wasm32".to_string(),
|
||||||
|
options,
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/wasm32_wasi.rs b/compiler/rustc_target/src/spec/wasm32_wasi.rs
|
||||||
|
index a6b12d2ee8f6..2dab206dc760 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/wasm32_wasi.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/wasm32_wasi.rs
|
||||||
|
@@ -109,7 +109,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "wasm32-wasi".to_string(),
|
||||||
|
pointer_width: 32,
|
||||||
|
- data_layout: "e-m:e-p:32:32-i64:64-n32:64-S128".to_string(),
|
||||||
|
+ data_layout: "e-m:e-p:32:32-i64:64-n32:64-S128-ni:1:10:20".to_string(),
|
||||||
|
arch: "wasm32".to_string(),
|
||||||
|
options,
|
||||||
|
}
|
||||||
|
diff --git a/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs b/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs
|
||||||
|
index 8bfb229d77f6..fb6526c0e720 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs
|
||||||
|
@@ -32,7 +32,7 @@ pub fn target() -> Target {
|
||||||
|
Target {
|
||||||
|
llvm_target: "wasm64-unknown-unknown".to_string(),
|
||||||
|
pointer_width: 64,
|
||||||
|
- data_layout: "e-m:e-p:64:64-i64:64-n32:64-S128".to_string(),
|
||||||
|
+ data_layout: "e-m:e-p:64:64-i64:64-n32:64-S128-ni:1:10:20".to_string(),
|
||||||
|
arch: "wasm64".to_string(),
|
||||||
|
options,
|
||||||
|
}
|
||||||
|
diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
|
||||||
|
index 1be414b29a1a..63a252154b90 100644
|
||||||
|
--- a/src/bootstrap/native.rs
|
||||||
|
+++ b/src/bootstrap/native.rs
|
||||||
|
@@ -174,6 +174,7 @@ fn run(self, builder: &Builder<'_>) -> PathBuf {
|
||||||
|
.define("LLVM_INCLUDE_EXAMPLES", "OFF")
|
||||||
|
.define("LLVM_INCLUDE_DOCS", "OFF")
|
||||||
|
.define("LLVM_INCLUDE_BENCHMARKS", "OFF")
|
||||||
|
+ .define("LLVM_INCLUDE_TESTS", "OFF")
|
||||||
|
.define("LLVM_ENABLE_TERMINFO", "OFF")
|
||||||
|
.define("LLVM_ENABLE_LIBEDIT", "OFF")
|
||||||
|
.define("LLVM_ENABLE_BINDINGS", "OFF")
|
||||||
|
diff --git a/src/test/codegen/array-equality.rs b/src/test/codegen/array-equality.rs
|
||||||
|
index 4b60fa4b0bff..fefc232b4904 100644
|
||||||
|
--- a/src/test/codegen/array-equality.rs
|
||||||
|
+++ b/src/test/codegen/array-equality.rs
|
||||||
|
@@ -29,7 +29,7 @@
|
||||||
|
// CHECK-NEXT: start:
|
||||||
|
// CHECK-NEXT: bitcast
|
||||||
|
// CHECK-NEXT: bitcast
|
||||||
|
- // CHECK-NEXT: %[[CMP:.+]] = tail call i32 @{{bcmp|memcmp}}(i8* nonnull dereferenceable(18) %{{.+}}, i8* nonnull dereferenceable(18) %{{.+}}, i64 18)
|
||||||
|
+ // CHECK-NEXT: %[[CMP:.+]] = tail call i32 @{{bcmp|memcmp}}(i8* {{.*}} dereferenceable(18) %{{.+}}, i8* {{.*}} dereferenceable(18) %{{.+}}, i64 18)
|
||||||
|
// CHECK-NEXT: %[[EQ:.+]] = icmp eq i32 %[[CMP]], 0
|
||||||
|
// CHECK-NEXT: ret i1 %[[EQ]]
|
||||||
|
a == b
|
||||||
|
@@ -41,7 +41,7 @@
|
||||||
|
// CHECK-NEXT: start:
|
||||||
|
// CHECK-NEXT: bitcast
|
||||||
|
// CHECK-NEXT: bitcast
|
||||||
|
- // CHECK-NEXT: %[[CMP:.+]] = tail call i32 @{{bcmp|memcmp}}(i8* nonnull dereferenceable(2468) %{{.+}}, i8* nonnull dereferenceable(2468) %{{.+}}, i64 2468)
|
||||||
|
+ // CHECK-NEXT: %[[CMP:.+]] = tail call i32 @{{bcmp|memcmp}}(i8* {{.*}} dereferenceable(2468) %{{.+}}, i8* {{.*}} dereferenceable(2468) %{{.+}}, i64 2468)
|
||||||
|
// CHECK-NEXT: %[[EQ:.+]] = icmp eq i32 %[[CMP]], 0
|
||||||
|
// CHECK-NEXT: ret i1 %[[EQ]]
|
||||||
|
a == b
|
||||||
|
diff --git a/src/test/codegen/issue-83623-SIMD-PartialEq.rs b/src/test/codegen/issue-83623-SIMD-PartialEq.rs
|
||||||
|
deleted file mode 100644
|
||||||
|
index b22b7f52402d..000000000000
|
||||||
|
--- a/src/test/codegen/issue-83623-SIMD-PartialEq.rs
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,46 +0,0 @@
|
||||||
|
-// This test checks that jumps generated by logical operators can be optimized away
|
||||||
|
-
|
||||||
|
-// compile-flags: -Copt-level=3
|
||||||
|
-// only-64bit
|
||||||
|
-
|
||||||
|
-#![crate_type="lib"]
|
||||||
|
-
|
||||||
|
-pub struct Blueprint {
|
||||||
|
- pub fuel_tank_size: u32,
|
||||||
|
- pub payload: u32,
|
||||||
|
- pub wheel_diameter: u32,
|
||||||
|
- pub wheel_width: u32,
|
||||||
|
- pub storage: u32,
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// && chains should not prevent SIMD optimizations for primitives
|
||||||
|
-impl PartialEq for Blueprint{
|
||||||
|
- fn eq(&self, other: &Self)->bool{
|
||||||
|
- // CHECK-NOT: call{{.*}}bcmp
|
||||||
|
- // CHECK-NOT: call{{.*}}memcmp
|
||||||
|
- // CHECK-NOT: br {{.*}}
|
||||||
|
- self.fuel_tank_size == other.fuel_tank_size
|
||||||
|
- && self.payload == other.payload
|
||||||
|
- && self.wheel_diameter == other.wheel_diameter
|
||||||
|
- && self.wheel_width == other.wheel_width
|
||||||
|
- && self.storage == other.storage
|
||||||
|
- }
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-#[derive(PartialEq)]
|
||||||
|
-pub struct Blueprint2 {
|
||||||
|
- pub fuel_tank_size: u32,
|
||||||
|
- pub payload: u32,
|
||||||
|
- pub wheel_diameter: u32,
|
||||||
|
- pub wheel_width: u32,
|
||||||
|
- pub storage: u32,
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-// Derived PartialEq should not generate jumps and should use SIMD
|
||||||
|
-#[no_mangle]
|
||||||
|
-pub fn partial_eq_should_not_jump(a: &Blueprint2, b:&Blueprint2)->bool{
|
||||||
|
- // CHECK-NOT: call{{.*}}bcmp
|
||||||
|
- // CHECK-NOT: call{{.*}}memcmp
|
||||||
|
- // CHECK-NOT: br {{.*}}
|
||||||
|
- a==b
|
||||||
|
-}
|
||||||
|
diff --git a/src/test/codegen/repeat-trusted-len.rs b/src/test/codegen/repeat-trusted-len.rs
|
||||||
|
index 9e904fc82ab4..cb2d0ef809af 100644
|
||||||
|
--- a/src/test/codegen/repeat-trusted-len.rs
|
||||||
|
+++ b/src/test/codegen/repeat-trusted-len.rs
|
||||||
|
@@ -8,6 +8,6 @@
|
||||||
|
// CHECK-LABEL: @repeat_take_collect
|
||||||
|
#[no_mangle]
|
||||||
|
pub fn repeat_take_collect() -> Vec<u8> {
|
||||||
|
-// CHECK: call void @llvm.memset.p0i8.i{{[0-9]+}}(i8* {{(nonnull )?}}align 1{{.*}} %{{[0-9]+}}, i8 42, i{{[0-9]+}} 100000, i1 false)
|
||||||
|
+// CHECK: call void @llvm.memset.p0i8.i{{[0-9]+}}(i8* {{.*}}align 1{{.*}} %{{[0-9]+}}, i8 42, i{{[0-9]+}} 100000, i1 false)
|
||||||
|
iter::repeat(42).take(100000).collect()
|
||||||
|
}
|
||||||
|
diff --git a/src/test/run-make-fulldeps/coverage-llvmir/Makefile b/src/test/run-make-fulldeps/coverage-llvmir/Makefile
|
||||||
|
index 7d9121ee2f83..1ff1ffcc4b0b 100644
|
||||||
|
--- a/src/test/run-make-fulldeps/coverage-llvmir/Makefile
|
||||||
|
+++ b/src/test/run-make-fulldeps/coverage-llvmir/Makefile
|
||||||
|
@@ -22,7 +22,6 @@ DEFINE_INTERNAL=define internal
|
||||||
|
ifdef IS_WINDOWS
|
||||||
|
LLVM_FILECHECK_OPTIONS=\
|
||||||
|
-check-prefixes=CHECK,WINDOWS \
|
||||||
|
- -DPRIVATE_GLOBAL='internal global' \
|
||||||
|
-DDEFINE_INTERNAL='$(DEFINE_INTERNAL)' \
|
||||||
|
-DCOMDAT_IF_SUPPORTED='$(COMDAT_IF_SUPPORTED)' \
|
||||||
|
-DINSTR_PROF_DATA='.lprfd$$M' \
|
||||||
|
@@ -36,7 +35,6 @@ ifdef IS_WINDOWS
|
||||||
|
else
|
||||||
|
LLVM_FILECHECK_OPTIONS=\
|
||||||
|
-check-prefixes=CHECK \
|
||||||
|
- -DPRIVATE_GLOBAL='private global' \
|
||||||
|
-DDEFINE_INTERNAL='$(DEFINE_INTERNAL)' \
|
||||||
|
-DCOMDAT_IF_SUPPORTED='$(COMDAT_IF_SUPPORTED)' \
|
||||||
|
-DINSTR_PROF_DATA='$(DATA_SECTION_PREFIX)__llvm_prf_data$(INSTR_PROF_DATA_SUFFIX)' \
|
||||||
|
diff --git a/src/test/run-make-fulldeps/coverage-llvmir/filecheck.testprog.txt b/src/test/run-make-fulldeps/coverage-llvmir/filecheck.testprog.txt
|
||||||
|
index a312ec48e849..8e5f21046877 100644
|
||||||
|
--- a/src/test/run-make-fulldeps/coverage-llvmir/filecheck.testprog.txt
|
||||||
|
+++ b/src/test/run-make-fulldeps/coverage-llvmir/filecheck.testprog.txt
|
||||||
|
@@ -11,27 +11,25 @@ CHECK-SAME: section "[[INSTR_PROF_COVMAP]]", align 8
|
||||||
|
|
||||||
|
WINDOWS: @__llvm_profile_runtime = external global i32
|
||||||
|
|
||||||
|
-CHECK: @__profc__R{{[a-zA-Z0-9_]+}}testprog14will_be_called = [[PRIVATE_GLOBAL]]
|
||||||
|
-CHECK-SAME: section "[[INSTR_PROF_CNTS]]", align 8
|
||||||
|
+CHECK: @__profc__R{{[a-zA-Z0-9_]+}}testprog14will_be_called = {{private|internal}} global
|
||||||
|
+CHECK-SAME: section "[[INSTR_PROF_CNTS]]"{{.*}}, align 8
|
||||||
|
|
||||||
|
-CHECK: @__profd__R{{[a-zA-Z0-9_]+}}testprog14will_be_called = [[PRIVATE_GLOBAL]]
|
||||||
|
+CHECK: @__profd__R{{[a-zA-Z0-9_]+}}testprog14will_be_called = {{private|internal}} global
|
||||||
|
CHECK-SAME: @__profc__R{{[a-zA-Z0-9_]+}}testprog14will_be_called,
|
||||||
|
-CHECK-SAME: section "[[INSTR_PROF_DATA]]", align 8
|
||||||
|
+CHECK-SAME: section "[[INSTR_PROF_DATA]]"{{.*}}, align 8
|
||||||
|
|
||||||
|
-CHECK: @__profc__R{{[a-zA-Z0-9_]+}}testprog4main = [[PRIVATE_GLOBAL]]
|
||||||
|
-CHECK-SAME: section "[[INSTR_PROF_CNTS]]", align 8
|
||||||
|
+CHECK: @__profc__R{{[a-zA-Z0-9_]+}}testprog4main = {{private|internal}} global
|
||||||
|
+CHECK-SAME: section "[[INSTR_PROF_CNTS]]"{{.*}}, align 8
|
||||||
|
|
||||||
|
-CHECK: @__profd__R{{[a-zA-Z0-9_]+}}testprog4main = [[PRIVATE_GLOBAL]]
|
||||||
|
+CHECK: @__profd__R{{[a-zA-Z0-9_]+}}testprog4main = {{private|internal}} global
|
||||||
|
CHECK-SAME: @__profc__R{{[a-zA-Z0-9_]+}}testprog4main,
|
||||||
|
-CHECK-SAME: section "[[INSTR_PROF_DATA]]", align 8
|
||||||
|
+CHECK-SAME: section "[[INSTR_PROF_DATA]]"{{.*}}, align 8
|
||||||
|
|
||||||
|
CHECK: @__llvm_prf_nm = private constant
|
||||||
|
CHECK-SAME: section "[[INSTR_PROF_NAME]]", align 1
|
||||||
|
|
||||||
|
CHECK: @llvm.used = appending global
|
||||||
|
CHECK-SAME: i8* bitcast ({ {{.*}} }* @__llvm_coverage_mapping to i8*)
|
||||||
|
-WINDOWS-SAME: i8* bitcast (i32 ()* @__llvm_profile_runtime_user to i8*)
|
||||||
|
-CHECK-SAME: i8* bitcast ({ {{.*}} }* @__profd__R{{[a-zA-Z0-9_]*}}testprog4main to i8*)
|
||||||
|
CHECK-SAME: i8* getelementptr inbounds ({{.*}}* @__llvm_prf_nm, i32 0, i32 0)
|
||||||
|
CHECK-SAME: section "llvm.metadata"
|
||||||
|
|
||||||
|
diff --git a/src/test/ui/llvm-asm/issue-69092.rs b/src/test/ui/llvm-asm/issue-69092.rs
|
||||||
|
index 96c019b760e9..8260e7204686 100644
|
||||||
|
--- a/src/test/ui/llvm-asm/issue-69092.rs
|
||||||
|
+++ b/src/test/ui/llvm-asm/issue-69092.rs
|
||||||
|
@@ -1,10 +1,12 @@
|
||||||
|
// build-fail
|
||||||
|
// ignore-emscripten no asm! support
|
||||||
|
+// The error message differs slightly between LLVM versions
|
||||||
|
+// min-llvm-version: 13.0
|
||||||
|
// Regression test for #69092
|
||||||
|
|
||||||
|
#![feature(llvm_asm)]
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
unsafe { llvm_asm!(".ascii \"Xen\0\""); }
|
||||||
|
- //~^ ERROR: expected string in '.ascii' directive
|
||||||
|
+ //~^ ERROR: expected string
|
||||||
|
}
|
||||||
|
diff --git a/src/test/ui/llvm-asm/issue-69092.stderr b/src/test/ui/llvm-asm/issue-69092.stderr
|
||||||
|
index 2ca86cf7c1b9..9bce1c0b346f 100644
|
||||||
|
--- a/src/test/ui/llvm-asm/issue-69092.stderr
|
||||||
|
+++ b/src/test/ui/llvm-asm/issue-69092.stderr
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
-error: expected string in '.ascii' directive
|
||||||
|
- --> $DIR/issue-69092.rs:8:14
|
||||||
|
+error: expected string
|
||||||
|
+ --> $DIR/issue-69092.rs:10:14
|
||||||
|
|
|
||||||
|
LL | unsafe { llvm_asm!(".ascii \"Xen\0\""); }
|
||||||
|
| ^
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
180
SPECS/rust.spec
180
SPECS/rust.spec
@ -10,19 +10,32 @@
|
|||||||
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
|
# e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
|
||||||
# or nightly wants some beta-YYYY-MM-DD
|
# or nightly wants some beta-YYYY-MM-DD
|
||||||
# Note that cargo matches the program version here, not its crate version.
|
# Note that cargo matches the program version here, not its crate version.
|
||||||
%global bootstrap_rust 1.50.0
|
%global bootstrap_rust 1.54.0
|
||||||
%global bootstrap_cargo 1.50.0
|
%global bootstrap_cargo 1.54.0
|
||||||
%global bootstrap_channel 1.50.0
|
%global bootstrap_channel 1.54.0
|
||||||
%global bootstrap_date 2021-02-11
|
%global bootstrap_date 2021-07-29
|
||||||
|
|
||||||
# Only the specified arches will use bootstrap binaries.
|
# Only the specified arches will use bootstrap binaries.
|
||||||
#global bootstrap_arches %%{rust_arches}
|
#global bootstrap_arches %%{rust_arches}
|
||||||
|
|
||||||
|
# Define a space-separated list of targets to ship rust-std-static-$triple for
|
||||||
|
# cross-compilation. The packages are noarch, but they're not fully
|
||||||
|
# reproducible between hosts, so only x86_64 actually builds it.
|
||||||
|
#ifarch x86_64
|
||||||
|
# FIX: Except on RHEL8 modules, we can't filter a noarch package from shipping
|
||||||
|
# on certain arches, namely s390x for its lack of lld. So we need to make it an
|
||||||
|
# arch-specific package only for the supported arches.
|
||||||
|
%ifnarch s390x
|
||||||
|
%if 0%{?fedora} || 0%{?rhel} >= 8
|
||||||
|
%global cross_targets wasm32-unknown-unknown
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
# Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases.
|
# Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases.
|
||||||
%bcond_with llvm_static
|
%bcond_with llvm_static
|
||||||
|
|
||||||
# We can also choose to just use Rust's bundled LLVM, in case the system LLVM
|
# We can also choose to just use Rust's bundled LLVM, in case the system LLVM
|
||||||
# is insufficient. Rust currently requires LLVM 9.0+.
|
# is insufficient. Rust currently requires LLVM 10.0+.
|
||||||
%bcond_with bundled_llvm
|
%bcond_with bundled_llvm
|
||||||
|
|
||||||
# Requires stable libgit2 1.1
|
# Requires stable libgit2 1.1
|
||||||
@ -53,7 +66,7 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: rust
|
Name: rust
|
||||||
Version: 1.51.0
|
Version: 1.55.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: The Rust Programming Language
|
Summary: The Rust Programming Language
|
||||||
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
License: (ASL 2.0 or MIT) and (BSD and MIT)
|
||||||
@ -72,9 +85,11 @@ Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
|
|||||||
# https://github.com/rust-lang/rust/issues/80810#issuecomment-781784032
|
# https://github.com/rust-lang/rust/issues/80810#issuecomment-781784032
|
||||||
Patch1: 0001-Revert-Auto-merge-of-79547.patch
|
Patch1: 0001-Revert-Auto-merge-of-79547.patch
|
||||||
|
|
||||||
# Fix bootstrap for stage0 rust 1.51
|
# By default, rust tries to use "rust-lld" as a linker for WebAssembly.
|
||||||
# https://github.com/rust-lang/rust/pull/81910
|
Patch2: 0001-Use-lld-provided-by-system-for-wasm.patch
|
||||||
Patch2: rustc-1.51.0-backport-pr81910.patch
|
|
||||||
|
# Backport support for LLVM 13, https://github.com/rust-lang/rust/pull/87570
|
||||||
|
Patch3: rustc-1.55.0-llvm-13.patch
|
||||||
|
|
||||||
### RHEL-specific patches below ###
|
### RHEL-specific patches below ###
|
||||||
|
|
||||||
@ -83,7 +98,7 @@ Patch100: rustc-1.48.0-disable-libssh2.patch
|
|||||||
|
|
||||||
# libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys
|
# libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys
|
||||||
# will try to build it statically -- instead we turn off the feature.
|
# will try to build it statically -- instead we turn off the feature.
|
||||||
Patch101: rustc-1.51.0-disable-http2.patch
|
Patch101: rustc-1.55.0-disable-http2.patch
|
||||||
|
|
||||||
# kernel rh1410097 causes too-small stacks for PIE.
|
# kernel rh1410097 causes too-small stacks for PIE.
|
||||||
# (affects RHEL6 kernels when building for RHEL7)
|
# (affects RHEL6 kernels when building for RHEL7)
|
||||||
@ -169,15 +184,11 @@ BuildRequires: pkgconfig(libssh2) >= 1.6.0
|
|||||||
BuildRequires: %{python}
|
BuildRequires: %{python}
|
||||||
|
|
||||||
%if %with bundled_llvm
|
%if %with bundled_llvm
|
||||||
BuildRequires: cmake3 >= 3.4.3
|
BuildRequires: cmake3 >= 3.13.4
|
||||||
Provides: bundled(llvm) = 11.0.1
|
Provides: bundled(llvm) = 12.0.1
|
||||||
%else
|
%else
|
||||||
BuildRequires: cmake >= 2.8.11
|
BuildRequires: cmake >= 2.8.11
|
||||||
%if 0%{?epel} == 7
|
%if 0%{?epel} == 7
|
||||||
%global llvm llvm9.0
|
|
||||||
%endif
|
|
||||||
%if 0%{?fedora} >= 34
|
|
||||||
# we're not ready for llvm-12 yet
|
|
||||||
%global llvm llvm11
|
%global llvm llvm11
|
||||||
%endif
|
%endif
|
||||||
%if %defined llvm
|
%if %defined llvm
|
||||||
@ -186,7 +197,7 @@ BuildRequires: cmake >= 2.8.11
|
|||||||
%global llvm llvm
|
%global llvm llvm
|
||||||
%global llvm_root %{_prefix}
|
%global llvm_root %{_prefix}
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: %{llvm}-devel >= 9.0
|
BuildRequires: %{llvm}-devel >= 10.0
|
||||||
%if %with llvm_static
|
%if %with llvm_static
|
||||||
BuildRequires: %{llvm}-static
|
BuildRequires: %{llvm}-static
|
||||||
BuildRequires: libffi-devel
|
BuildRequires: libffi-devel
|
||||||
@ -211,6 +222,14 @@ Requires: %{name}-std-static%{?_isa} = %{version}-%{release}
|
|||||||
# https://github.com/rust-lang/rust/issues/11937
|
# https://github.com/rust-lang/rust/issues/11937
|
||||||
Requires: /usr/bin/cc
|
Requires: /usr/bin/cc
|
||||||
|
|
||||||
|
%if 0%{?epel} == 7
|
||||||
|
%global devtoolset_name devtoolset-9
|
||||||
|
BuildRequires: %{devtoolset_name}-gcc
|
||||||
|
BuildRequires: %{devtoolset_name}-gcc-c++
|
||||||
|
%global __cc /opt/rh/%{devtoolset_name}/root/usr/bin/gcc
|
||||||
|
%global __cxx /opt/rh/%{devtoolset_name}/root/usr/bin/g++
|
||||||
|
%endif
|
||||||
|
|
||||||
# ALL Rust libraries are private, because they don't keep an ABI.
|
# ALL Rust libraries are private, because they don't keep an ABI.
|
||||||
%global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.*
|
%global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.*
|
||||||
%global __provides_exclude ^(%{_privatelibs})$
|
%global __provides_exclude ^(%{_privatelibs})$
|
||||||
@ -239,6 +258,19 @@ Requires: /usr/bin/cc
|
|||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# We're going to override --libdir when configuring to get rustlib into a
|
||||||
|
# common path, but we'll fix the shared libraries during install.
|
||||||
|
%global common_libdir %{_prefix}/lib
|
||||||
|
%global rustlibdir %{common_libdir}/rustlib
|
||||||
|
|
||||||
|
%if %defined cross_targets
|
||||||
|
# brp-strip-static-archive breaks the archive index for wasm
|
||||||
|
%global __os_install_post \
|
||||||
|
%__os_install_post \
|
||||||
|
find '%{buildroot}%{rustlibdir}' -type f -path '*/wasm*/lib/*.rlib' -print -exec '%{llvm_root}/bin/llvm-ranlib' '{}' ';' \
|
||||||
|
%{nil}
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Rust is a systems programming language that runs blazingly fast, prevents
|
Rust is a systems programming language that runs blazingly fast, prevents
|
||||||
segfaults, and guarantees thread safety.
|
segfaults, and guarantees thread safety.
|
||||||
@ -253,6 +285,33 @@ Summary: Standard library for Rust
|
|||||||
This package includes the standard libraries for building applications
|
This package includes the standard libraries for building applications
|
||||||
written in Rust.
|
written in Rust.
|
||||||
|
|
||||||
|
%if %defined cross_targets
|
||||||
|
%{lua: do
|
||||||
|
for triple in string.gmatch(rpm.expand("%{cross_targets}"), "%S+") do
|
||||||
|
local requires = rpm.expand("Requires: rust = %{version}-%{release}")
|
||||||
|
if string.sub(triple, 1, 4) == "wasm" then
|
||||||
|
requires = requires .. "\nRequires: lld >= 8.0"
|
||||||
|
end
|
||||||
|
local subs = {
|
||||||
|
triple = triple,
|
||||||
|
requires = requires,
|
||||||
|
}
|
||||||
|
local s = string.gsub([[
|
||||||
|
%package std-static-{{triple}}
|
||||||
|
Summary: Standard library for Rust
|
||||||
|
# FIX: we can't be noarch while excluding s390x for lack of lld
|
||||||
|
# BuildArch: noarch
|
||||||
|
{{requires}}
|
||||||
|
|
||||||
|
%description std-static-{{triple}}
|
||||||
|
This package includes the standard libraries for building applications
|
||||||
|
written in Rust for the {{triple}} target.
|
||||||
|
]], "{{(%w+)}}", subs)
|
||||||
|
print(s)
|
||||||
|
end
|
||||||
|
end}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%package debugger-common
|
%package debugger-common
|
||||||
Summary: Common debugger pretty printers for Rust
|
Summary: Common debugger pretty printers for Rust
|
||||||
@ -411,6 +470,7 @@ test -f '%{local_rust_root}/bin/rustc'
|
|||||||
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
|
||||||
%if %with disabled_libssh2
|
%if %with disabled_libssh2
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
@ -496,11 +556,6 @@ find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+'
|
|||||||
%build
|
%build
|
||||||
export %{rust_env}
|
export %{rust_env}
|
||||||
|
|
||||||
# We're going to override --libdir when configuring to get rustlib into a
|
|
||||||
# common path, but we'll fix the shared libraries during install.
|
|
||||||
%global common_libdir %{_prefix}/lib
|
|
||||||
%global rustlibdir %{common_libdir}/rustlib
|
|
||||||
|
|
||||||
%ifarch %{arm} %{ix86} s390x
|
%ifarch %{arm} %{ix86} s390x
|
||||||
# full debuginfo is exhausting memory; just do libstd for now
|
# full debuginfo is exhausting memory; just do libstd for now
|
||||||
# https://github.com/rust-lang/rust/issues/45854
|
# https://github.com/rust-lang/rust/issues/45854
|
||||||
@ -515,13 +570,6 @@ export %{rust_env}
|
|||||||
%define enable_debuginfo --debuginfo-level=2
|
%define enable_debuginfo --debuginfo-level=2
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# We want the best optimization for std, but it caused problems for rpm-ostree
|
|
||||||
# on ppc64le to have all of the compiler_builtins in a single object:
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1713090
|
|
||||||
%ifnarch %{power64}
|
|
||||||
%define codegen_units_std --set rust.codegen-units-std=1
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Some builders have relatively little memory for their CPU count.
|
# Some builders have relatively little memory for their CPU count.
|
||||||
# At least 2GB per CPU is a good rule of thumb for building rustc.
|
# At least 2GB per CPU is a good rule of thumb for building rustc.
|
||||||
ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN)
|
ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN)
|
||||||
@ -533,6 +581,9 @@ fi
|
|||||||
%configure --disable-option-checking \
|
%configure --disable-option-checking \
|
||||||
--libdir=%{common_libdir} \
|
--libdir=%{common_libdir} \
|
||||||
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
|
--build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
|
||||||
|
--set target.%{rust_triple}.linker=%{__cc} \
|
||||||
|
--set target.%{rust_triple}.cc=%{__cc} \
|
||||||
|
--set target.%{rust_triple}.cxx=%{__cxx} \
|
||||||
--python=%{python} \
|
--python=%{python} \
|
||||||
--local-rust-root=%{local_rust_root} \
|
--local-rust-root=%{local_rust_root} \
|
||||||
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
|
%{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
|
||||||
@ -540,6 +591,7 @@ fi
|
|||||||
%{!?with_llvm_static: --enable-llvm-link-shared } } \
|
%{!?with_llvm_static: --enable-llvm-link-shared } } \
|
||||||
--disable-rpath \
|
--disable-rpath \
|
||||||
%{enable_debuginfo} \
|
%{enable_debuginfo} \
|
||||||
|
--set rust.codegen-units-std=1 \
|
||||||
--enable-extended \
|
--enable-extended \
|
||||||
--tools=analysis,cargo,clippy,rls,rustfmt,src \
|
--tools=analysis,cargo,clippy,rls,rustfmt,src \
|
||||||
--enable-vendor \
|
--enable-vendor \
|
||||||
@ -551,12 +603,26 @@ fi
|
|||||||
%{python} ./x.py build -j "$ncpus" --stage 2
|
%{python} ./x.py build -j "$ncpus" --stage 2
|
||||||
%{python} ./x.py doc --stage 2
|
%{python} ./x.py doc --stage 2
|
||||||
|
|
||||||
|
%if %defined cross_targets
|
||||||
|
for triple in %{cross_targets}; do
|
||||||
|
%{python} ./x.py build --stage 2 --target=$triple std
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
export %{rust_env}
|
export %{rust_env}
|
||||||
|
|
||||||
DESTDIR=%{buildroot} %{python} ./x.py install
|
DESTDIR=%{buildroot} %{python} ./x.py install
|
||||||
|
|
||||||
|
%if %defined cross_targets
|
||||||
|
for triple in %{cross_targets}; do
|
||||||
|
DESTDIR=%{buildroot} %{python} ./x.py install --target=$triple std
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# These are transient files used by x.py dist and install
|
||||||
|
rm -rf ./build/dist/ ./build/tmp/
|
||||||
|
|
||||||
# Make sure the shared libraries are in the proper libdir
|
# Make sure the shared libraries are in the proper libdir
|
||||||
%if "%{_libdir}" != "%{common_libdir}"
|
%if "%{_libdir}" != "%{common_libdir}"
|
||||||
mkdir -p %{buildroot}%{_libdir}
|
mkdir -p %{buildroot}%{_libdir}
|
||||||
@ -627,9 +693,20 @@ rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll*
|
|||||||
%check
|
%check
|
||||||
export %{rust_env}
|
export %{rust_env}
|
||||||
|
|
||||||
|
# Sanity-check the installed binaries, debuginfo-stripped and all.
|
||||||
|
%{buildroot}%{_bindir}/cargo new build/hello-world
|
||||||
|
env RUSTC=%{buildroot}%{_bindir}/rustc \
|
||||||
|
LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \
|
||||||
|
%{buildroot}%{_bindir}/cargo run --manifest-path build/hello-world/Cargo.toml
|
||||||
|
|
||||||
# The results are not stable on koji, so mask errors and just log it.
|
# The results are not stable on koji, so mask errors and just log it.
|
||||||
|
# Some of the larger test artifacts are manually cleaned to save space.
|
||||||
%{python} ./x.py test --no-fail-fast --stage 2 || :
|
%{python} ./x.py test --no-fail-fast --stage 2 || :
|
||||||
|
rm -rf "./build/%{rust_triple}/test/"
|
||||||
|
|
||||||
%{python} ./x.py test --no-fail-fast --stage 2 cargo || :
|
%{python} ./x.py test --no-fail-fast --stage 2 cargo || :
|
||||||
|
rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/"
|
||||||
|
|
||||||
%{python} ./x.py test --no-fail-fast --stage 2 clippy || :
|
%{python} ./x.py test --no-fail-fast --stage 2 clippy || :
|
||||||
%{python} ./x.py test --no-fail-fast --stage 2 rls || :
|
%{python} ./x.py test --no-fail-fast --stage 2 rls || :
|
||||||
%{python} ./x.py test --no-fail-fast --stage 2 rustfmt || :
|
%{python} ./x.py test --no-fail-fast --stage 2 rustfmt || :
|
||||||
@ -659,6 +736,26 @@ export %{rust_env}
|
|||||||
%{rustlibdir}/%{rust_triple}/lib/*.rlib
|
%{rustlibdir}/%{rust_triple}/lib/*.rlib
|
||||||
|
|
||||||
|
|
||||||
|
%if %defined cross_targets
|
||||||
|
%{lua: do
|
||||||
|
for triple in string.gmatch(rpm.expand("%{cross_targets}"), "%S+") do
|
||||||
|
local subs = {
|
||||||
|
triple = triple,
|
||||||
|
rustlibdir = rpm.expand("%{rustlibdir}"),
|
||||||
|
}
|
||||||
|
local s = string.gsub([[
|
||||||
|
%files std-static-{{triple}}
|
||||||
|
%dir {{rustlibdir}}
|
||||||
|
%dir {{rustlibdir}}/{{triple}}
|
||||||
|
%dir {{rustlibdir}}/{{triple}}/lib
|
||||||
|
{{rustlibdir}}/{{triple}}/lib/*.rlib
|
||||||
|
]], "{{(%w+)}}", subs)
|
||||||
|
print(s)
|
||||||
|
end
|
||||||
|
end}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%files debugger-common
|
%files debugger-common
|
||||||
%dir %{rustlibdir}
|
%dir %{rustlibdir}
|
||||||
%dir %{rustlibdir}/etc
|
%dir %{rustlibdir}/etc
|
||||||
@ -689,6 +786,7 @@ export %{rust_env}
|
|||||||
%{_docdir}/%{name}/html/*.png
|
%{_docdir}/%{name}/html/*.png
|
||||||
%{_docdir}/%{name}/html/*.svg
|
%{_docdir}/%{name}/html/*.svg
|
||||||
%{_docdir}/%{name}/html/*.woff
|
%{_docdir}/%{name}/html/*.woff
|
||||||
|
%{_docdir}/%{name}/html/*.woff2
|
||||||
%license %{_docdir}/%{name}/html/*.txt
|
%license %{_docdir}/%{name}/html/*.txt
|
||||||
%license %{_docdir}/%{name}/html/*.md
|
%license %{_docdir}/%{name}/html/*.md
|
||||||
|
|
||||||
@ -741,6 +839,30 @@ export %{rust_env}
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 29 2021 Josh Stone <jistone@redhat.com> - 1.55.0-1
|
||||||
|
- Update to 1.55.0.
|
||||||
|
- Backport support for LLVM 13.
|
||||||
|
|
||||||
|
* Tue Aug 17 2021 Josh Stone <jistone@redhat.com> - 1.54.0-2
|
||||||
|
- Make std-static-wasm* arch-specific to avoid s390x.
|
||||||
|
|
||||||
|
* Thu Jul 29 2021 Josh Stone <jistone@redhat.com> - 1.54.0-1
|
||||||
|
- Update to 1.54.0.
|
||||||
|
|
||||||
|
* Tue Jul 20 2021 Josh Stone <jistone@redhat.com> - 1.53.0-2
|
||||||
|
- Use llvm-ranlib to fix wasm archives.
|
||||||
|
|
||||||
|
* Mon Jun 21 2021 Josh Stone <jistone@redhat.com> - 1.53.0-1
|
||||||
|
- Update to 1.53.0.
|
||||||
|
|
||||||
|
* Tue Jun 15 2021 Josh Stone <jistone@redhat.com> - 1.52.1-2
|
||||||
|
- Set rust.codegen-units-std=1 for all targets again.
|
||||||
|
- Add rust-std-static-wasm32-unknown-unknown.
|
||||||
|
|
||||||
|
* Tue May 25 2021 Josh Stone <jistone@redhat.com> - 1.52.1-1
|
||||||
|
- Update to 1.52.1. Includes security fixes for CVE-2020-36323,
|
||||||
|
CVE-2021-28876, CVE-2021-28878, CVE-2021-28879, and CVE-2021-31162.
|
||||||
|
|
||||||
* Mon May 24 2021 Josh Stone <jistone@redhat.com> - 1.51.0-1
|
* Mon May 24 2021 Josh Stone <jistone@redhat.com> - 1.51.0-1
|
||||||
- Update to 1.51.0. Update to 1.51.0. Includes security fixes for
|
- Update to 1.51.0. Update to 1.51.0. Includes security fixes for
|
||||||
CVE-2021-28875 and CVE-2021-28877.
|
CVE-2021-28875 and CVE-2021-28877.
|
||||||
|
Loading…
Reference in New Issue
Block a user