Bump compiler-builtins to 0.1.15
This commit bumps the `compiler-builtins` dependency to 0.1.15 which expects to have the source for `compiler-rt` provided externally if the `c` feature is enabled. This then plumbs through the necessary support in the build system to ensure that if the `llvm-project` directory is checked out and present that we enable the `c` feature of `compiler-builtins` and compile in all the C intrinsics.
This commit is contained in:
parent
37ff5d388f
commit
e59f0cc0d3
34
Cargo.lock
34
Cargo.lock
@ -25,7 +25,7 @@ dependencies = [
|
||||
name = "alloc"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -123,7 +123,7 @@ version = "0.1.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
@ -462,7 +462,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "compiler_builtins"
|
||||
version = "0.1.14"
|
||||
version = "0.1.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -744,7 +744,7 @@ name = "dlmalloc"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
@ -910,7 +910,7 @@ name = "fortanix-sgx-abi"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
||||
@ -1071,7 +1071,7 @@ name = "hashbrown"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-alloc 1.0.0",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
@ -1772,7 +1772,7 @@ dependencies = [
|
||||
name = "panic_abort"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@ -1782,7 +1782,7 @@ name = "panic_unwind"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unwind 0.0.0",
|
||||
@ -1967,7 +1967,7 @@ name = "profiler_builtins"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
@ -2492,7 +2492,7 @@ name = "rustc-demangle"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-std-workspace-core 1.0.0",
|
||||
]
|
||||
|
||||
@ -2620,7 +2620,7 @@ dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
@ -2850,7 +2850,7 @@ dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
@ -2912,7 +2912,7 @@ dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
@ -3029,7 +3029,7 @@ dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"build_helper 0.1.0",
|
||||
"cmake 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
]
|
||||
|
||||
@ -3298,7 +3298,7 @@ dependencies = [
|
||||
"alloc 0.0.0",
|
||||
"backtrace-sys 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"dlmalloc 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"fortanix-sgx-abi 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@ -3889,7 +3889,7 @@ name = "unwind"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"core 0.0.0",
|
||||
"libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@ -4087,7 +4087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
"checksum colored 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0aa3473e85a3161b59845d6096b289bb577874cafeaf75ea1b1beaa6572c7fc"
|
||||
"checksum commoncrypto 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"
|
||||
"checksum commoncrypto-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"
|
||||
"checksum compiler_builtins 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "e3f235c329e5cb9fa3d2ca2cc36256ba9a7f23fa76e0f4db6f68c23b73b2ac69"
|
||||
"checksum compiler_builtins 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e899b947d7e71c3d35c0b6194d64025b84946640510e215090c815b20828964e"
|
||||
"checksum compiletest_rs 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "f40ecc9332b68270998995c00f8051ee856121764a0d3230e64c9efd059d27b6"
|
||||
"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
|
||||
"checksum core-foundation 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4e2640d6d0bf22e82bed1b73c6aef8d5dd31e5abe6666c57e6d45e2649f4f887"
|
||||
|
@ -161,7 +161,33 @@ pub fn std_cargo(builder: &Builder<'_>,
|
||||
cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
|
||||
}
|
||||
|
||||
// Determine if we're going to compile in optimized C intrinsics to
|
||||
// the `compiler-builtins` crate. These intrinsics live in LLVM's
|
||||
// `compiler-rt` repository, but our `src/llvm-project` submodule isn't
|
||||
// always checked out, so we need to conditionally look for this. (e.g. if
|
||||
// an external LLVM is used we skip the LLVM submodule checkout).
|
||||
//
|
||||
// Note that this shouldn't affect the correctness of `compiler-builtins`,
|
||||
// but only its speed. Some intrinsics in C haven't been translated to Rust
|
||||
// yet but that's pretty rare. Other intrinsics have optimized
|
||||
// implementations in C which have only had slower versions ported to Rust,
|
||||
// so we favor the C version where we can, but it's not critical.
|
||||
//
|
||||
// If `compiler-rt` is available ensure that the `c` feature of the
|
||||
// `compiler-builtins` crate is enabled and it's configured to learn where
|
||||
// `compiler-rt` is located.
|
||||
let compiler_builtins_root = builder.src.join("src/llvm-project/compiler-rt");
|
||||
let compiler_builtins_c_feature = if compiler_builtins_root.exists() {
|
||||
cargo.env("RUST_COMPILER_RT_ROOT", &compiler_builtins_root);
|
||||
" compiler-builtins-c".to_string()
|
||||
} else {
|
||||
String::new()
|
||||
};
|
||||
|
||||
if builder.no_std(target) == Some(true) {
|
||||
let mut features = "compiler-builtins-mem".to_string();
|
||||
features.push_str(&compiler_builtins_c_feature);
|
||||
|
||||
// for no-std targets we only compile a few no_std crates
|
||||
cargo
|
||||
.args(&["-p", "alloc"])
|
||||
@ -170,7 +196,8 @@ pub fn std_cargo(builder: &Builder<'_>,
|
||||
.arg("--features")
|
||||
.arg("compiler-builtins-mem compiler-builtins-c");
|
||||
} else {
|
||||
let features = builder.std_features();
|
||||
let mut features = builder.std_features();
|
||||
features.push_str(&compiler_builtins_c_feature);
|
||||
|
||||
if compiler.stage != 0 && builder.config.sanitizers {
|
||||
// This variable is used by the sanitizer runtime crates, e.g.
|
||||
|
@ -288,9 +288,9 @@ pub fn sanitizer_lib_boilerplate(sanitizer_name: &str)
|
||||
} else {
|
||||
format!("static={}", link_name)
|
||||
};
|
||||
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
|
||||
// load our env var set by cargo to find the source code.
|
||||
let dir = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();
|
||||
// This env var is provided by rustbuild to tell us where `compiler-rt`
|
||||
// lives.
|
||||
let dir = env::var_os("RUST_COMPILER_RT_ROOT").unwrap();
|
||||
let lib = native_lib_boilerplate(
|
||||
dir.as_ref(),
|
||||
sanitizer_name,
|
||||
|
@ -57,9 +57,7 @@ fn main() {
|
||||
cfg.define("COMPILER_RT_HAS_ATOMICS", Some("1"));
|
||||
}
|
||||
|
||||
// The source for `compiler-rt` comes from the `compiler-builtins` crate, so
|
||||
// load our env var set by cargo to find the source code.
|
||||
let root = env::var_os("DEP_COMPILER_RT_COMPILER_RT").unwrap();
|
||||
let root = env::var_os("RUST_COMPILER_RT_ROOT").unwrap();
|
||||
let root = Path::new(&root);
|
||||
|
||||
for src in profile_sources {
|
||||
|
@ -19,7 +19,7 @@ panic_unwind = { path = "../libpanic_unwind", optional = true }
|
||||
panic_abort = { path = "../libpanic_abort" }
|
||||
core = { path = "../libcore" }
|
||||
libc = { version = "0.2.51", default-features = false, features = ['rustc-dep-of-std'] }
|
||||
compiler_builtins = { version = "0.1.14" }
|
||||
compiler_builtins = { version = "0.1.15" }
|
||||
profiler_builtins = { path = "../libprofiler_builtins", optional = true }
|
||||
unwind = { path = "../libunwind" }
|
||||
hashbrown = { version = "0.3.0", features = ['rustc-dep-of-std'] }
|
||||
@ -49,12 +49,12 @@ fortanix-sgx-abi = { version = "0.3.2", features = ['rustc-dep-of-std'] }
|
||||
cc = "1.0"
|
||||
|
||||
[features]
|
||||
default = ["compiler_builtins_c", "std_detect_file_io", "std_detect_dlsym_getauxval"]
|
||||
default = ["std_detect_file_io", "std_detect_dlsym_getauxval"]
|
||||
|
||||
backtrace = ["backtrace-sys"]
|
||||
panic-unwind = ["panic_unwind"]
|
||||
profiler = ["profiler_builtins"]
|
||||
compiler_builtins_c = ["alloc/compiler-builtins-c"]
|
||||
compiler-builtins-c = ["alloc/compiler-builtins-c"]
|
||||
llvm-libunwind = ["unwind/llvm-libunwind"]
|
||||
|
||||
# Make panics and failed asserts immediately abort without formatting any message
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 2c5656ae593851d0b2336a727cc14b77a06b8ac0
|
||||
Subproject commit 4efebe31651d5520bcba968878dbb8a4971d2045
|
Loading…
Reference in New Issue
Block a user