diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index c71d332475a..60547acc956 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -1,5 +1,6 @@ use super::command::Command; use super::symbol_export; +use crate::errors::LibDefWriteFailure; use rustc_span::symbol::sym; use std::ffi::{OsStr, OsString}; @@ -666,7 +667,7 @@ impl<'a> Linker for GccLinker<'a> { } }; if let Err(e) = res { - self.sess.fatal(&format!("failed to write lib.def file: {}", e)); + self.sess.emit_fatal(LibDefWriteFailure { error_description: format!("{e}") }); } } else if is_windows { let res: io::Result<()> = try { @@ -681,7 +682,7 @@ impl<'a> Linker for GccLinker<'a> { } }; if let Err(e) = res { - self.sess.fatal(&format!("failed to write list.def file: {}", e)); + self.sess.emit_fatal(LibDefWriteFailure { error_description: format!("{e}") }); } } else { // Write an LD version script @@ -972,7 +973,7 @@ impl<'a> Linker for MsvcLinker<'a> { } }; if let Err(e) = res { - self.sess.fatal(&format!("failed to write lib.def file: {}", e)); + self.sess.emit_fatal(LibDefWriteFailure { error_description: format!("{e}") }); } let mut arg = OsString::from("/DEF:"); arg.push(path); diff --git a/compiler/rustc_codegen_ssa/src/errors.rs b/compiler/rustc_codegen_ssa/src/errors.rs index 170b7983dbe..718ad5c7bf5 100644 --- a/compiler/rustc_codegen_ssa/src/errors.rs +++ b/compiler/rustc_codegen_ssa/src/errors.rs @@ -7,3 +7,9 @@ use rustc_macros::SessionDiagnostic; pub struct MissingNativeStaticLibrary<'a> { pub library_name: &'a str, } + +#[derive(SessionDiagnostic)] +#[diag(codegen_ssa::lib_def_write_failure)] +pub struct LibDefWriteFailure { + pub error_description: String, +} diff --git a/compiler/rustc_error_messages/locales/en-US/codegen_ssa.ftl b/compiler/rustc_error_messages/locales/en-US/codegen_ssa.ftl index deba0dc6f99..597f3488fc1 100644 --- a/compiler/rustc_error_messages/locales/en-US/codegen_ssa.ftl +++ b/compiler/rustc_error_messages/locales/en-US/codegen_ssa.ftl @@ -1 +1,3 @@ codegen_ssa_missing_native_static_library = could not find native static library `{$library_name}`, perhaps an -L flag is missing? + +codegen_ssa_lib_def_write_failure = failed to write lib.def file: {$error_description}