Rollup merge of #119815 - nagisa:nagisa/polishes-libloading-use-somewhat, r=bjorn3
Format sources into the error message when loading codegen backends cc https://github.com/rust-lang/rustc_codegen_cranelift/issues/1447 cc `@bjorn3`
This commit is contained in:
commit
ae09415fa4
7 changed files with 20 additions and 23 deletions
16
Cargo.lock
16
Cargo.lock
|
@ -2187,16 +2187,6 @@ dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libloading"
|
|
||||||
version = "0.7.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
version = "0.8.1"
|
version = "0.8.1"
|
||||||
|
@ -2479,7 +2469,7 @@ dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"libc",
|
"libc",
|
||||||
"libffi",
|
"libffi",
|
||||||
"libloading 0.8.1",
|
"libloading",
|
||||||
"log",
|
"log",
|
||||||
"measureme",
|
"measureme",
|
||||||
"rand",
|
"rand",
|
||||||
|
@ -4005,7 +3995,7 @@ dependencies = [
|
||||||
name = "rustc_interface"
|
name = "rustc_interface"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libloading 0.7.4",
|
"libloading",
|
||||||
"rustc-rayon",
|
"rustc-rayon",
|
||||||
"rustc-rayon-core",
|
"rustc-rayon-core",
|
||||||
"rustc_ast",
|
"rustc_ast",
|
||||||
|
@ -4135,7 +4125,7 @@ name = "rustc_metadata"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.1",
|
"bitflags 2.4.1",
|
||||||
"libloading 0.7.4",
|
"libloading",
|
||||||
"odht",
|
"odht",
|
||||||
"rustc_ast",
|
"rustc_ast",
|
||||||
"rustc_attr",
|
"rustc_attr",
|
||||||
|
|
|
@ -246,12 +246,12 @@ checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libloading"
|
name = "libloading"
|
||||||
version = "0.7.4"
|
version = "0.8.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
|
checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"winapi",
|
"windows-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -19,7 +19,7 @@ gimli = { version = "0.28", default-features = false, features = ["write"]}
|
||||||
object = { version = "0.32", default-features = false, features = ["std", "read_core", "write", "archive", "coff", "elf", "macho", "pe"] }
|
object = { version = "0.32", default-features = false, features = ["std", "read_core", "write", "archive", "coff", "elf", "macho", "pe"] }
|
||||||
|
|
||||||
indexmap = "2.0.0"
|
indexmap = "2.0.0"
|
||||||
libloading = { version = "0.7.3", optional = true }
|
libloading = { version = "0.8.0", optional = true }
|
||||||
smallvec = "1.8.1"
|
smallvec = "1.8.1"
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
|
|
|
@ -5,7 +5,7 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# tidy-alphabetical-start
|
# tidy-alphabetical-start
|
||||||
libloading = "0.7.1"
|
libloading = "0.8.0"
|
||||||
rustc-rayon = { version = "0.5.0", optional = true }
|
rustc-rayon = { version = "0.5.0", optional = true }
|
||||||
rustc-rayon-core = { version = "0.5.0", optional = true }
|
rustc-rayon-core = { version = "0.5.0", optional = true }
|
||||||
rustc_ast = { path = "../rustc_ast" }
|
rustc_ast = { path = "../rustc_ast" }
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
#![feature(decl_macro)]
|
#![feature(decl_macro)]
|
||||||
|
#![feature(error_iter)]
|
||||||
#![feature(internal_output_capture)]
|
#![feature(internal_output_capture)]
|
||||||
#![feature(thread_spawn_unchecked)]
|
|
||||||
#![feature(lazy_cell)]
|
#![feature(lazy_cell)]
|
||||||
#![feature(let_chains)]
|
#![feature(let_chains)]
|
||||||
|
#![feature(thread_spawn_unchecked)]
|
||||||
#![feature(try_blocks)]
|
#![feature(try_blocks)]
|
||||||
#![recursion_limit = "256"]
|
#![recursion_limit = "256"]
|
||||||
#![deny(rustc::untranslatable_diagnostic)]
|
#![deny(rustc::untranslatable_diagnostic)]
|
||||||
|
|
|
@ -162,15 +162,21 @@ pub(crate) fn run_in_thread_pool_with_globals<F: FnOnce() -> R + Send, R: Send>(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_backend_from_dylib(early_dcx: &EarlyDiagCtxt, path: &Path) -> MakeBackendFn {
|
fn load_backend_from_dylib(early_dcx: &EarlyDiagCtxt, path: &Path) -> MakeBackendFn {
|
||||||
|
fn format_err(e: &(dyn std::error::Error + 'static)) -> String {
|
||||||
|
e.sources().map(|e| format!(": {e}")).collect()
|
||||||
|
}
|
||||||
let lib = unsafe { Library::new(path) }.unwrap_or_else(|err| {
|
let lib = unsafe { Library::new(path) }.unwrap_or_else(|err| {
|
||||||
let err = format!("couldn't load codegen backend {path:?}: {err}");
|
let err = format!("couldn't load codegen backend {path:?}{}", format_err(&err));
|
||||||
early_dcx.early_fatal(err);
|
early_dcx.early_fatal(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
let backend_sym = unsafe { lib.get::<MakeBackendFn>(b"__rustc_codegen_backend") }
|
let backend_sym = unsafe { lib.get::<MakeBackendFn>(b"__rustc_codegen_backend") }
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
let err = format!("couldn't load codegen backend: {e}");
|
let e = format!(
|
||||||
early_dcx.early_fatal(err);
|
"`__rustc_codegen_backend` symbol lookup in the codegen backend failed{}",
|
||||||
|
format_err(&e)
|
||||||
|
);
|
||||||
|
early_dcx.early_fatal(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Intentionally leak the dynamic library. We can't ever unload it
|
// Intentionally leak the dynamic library. We can't ever unload it
|
||||||
|
|
|
@ -6,7 +6,7 @@ edition = "2021"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# tidy-alphabetical-start
|
# tidy-alphabetical-start
|
||||||
bitflags = "2.4.1"
|
bitflags = "2.4.1"
|
||||||
libloading = "0.7.1"
|
libloading = "0.8.0"
|
||||||
odht = { version = "0.3.1", features = ["nightly"] }
|
odht = { version = "0.3.1", features = ["nightly"] }
|
||||||
rustc_ast = { path = "../rustc_ast" }
|
rustc_ast = { path = "../rustc_ast" }
|
||||||
rustc_attr = { path = "../rustc_attr" }
|
rustc_attr = { path = "../rustc_attr" }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue