Format sources into the error message when loading codegen backends
cc https://github.com/rust-lang/rustc_codegen_cranelift/issues/1447
This commit is contained in:
parent
fcaeb45421
commit
1dc3ab02cd
3 changed files with 14 additions and 7 deletions
|
@ -1,9 +1,10 @@
|
|||
#![feature(box_patterns)]
|
||||
#![feature(decl_macro)]
|
||||
#![feature(error_iter)]
|
||||
#![feature(internal_output_capture)]
|
||||
#![feature(thread_spawn_unchecked)]
|
||||
#![feature(lazy_cell)]
|
||||
#![feature(let_chains)]
|
||||
#![feature(thread_spawn_unchecked)]
|
||||
#![feature(try_blocks)]
|
||||
#![recursion_limit = "256"]
|
||||
#![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 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 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);
|
||||
});
|
||||
|
||||
let backend_sym = unsafe { lib.get::<MakeBackendFn>(b"__rustc_codegen_backend") }
|
||||
.unwrap_or_else(|e| {
|
||||
let err = format!("couldn't load codegen backend: {e}");
|
||||
early_dcx.early_fatal(err);
|
||||
let e = format!(
|
||||
"`__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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue