1
Fork 0

Port UnknownArchiveKind

This commit is contained in:
SLASHLogin 2022-08-26 19:42:29 +02:00
parent c01546fcd6
commit 33ef16f291
3 changed files with 14 additions and 4 deletions

View file

@ -14,7 +14,7 @@ use object::read::macho::FatArch;
use crate::common; use crate::common;
use crate::errors::{ use crate::errors::{
ArchiveBuildFailure, DlltoolFailImportLibrary, ErrorCallingDllTool, ErrorCreatingImportLibrary, ArchiveBuildFailure, DlltoolFailImportLibrary, ErrorCallingDllTool, ErrorCreatingImportLibrary,
ErrorWritingDEFFile, ErrorWritingDEFFile, UnknownArchiveKind,
}; };
use crate::llvm::archive_ro::{ArchiveRO, Child}; use crate::llvm::archive_ro::{ArchiveRO, Child};
use crate::llvm::{self, ArchiveKind, LLVMMachineType, LLVMRustCOFFShortExport}; use crate::llvm::{self, ArchiveKind, LLVMMachineType, LLVMRustCOFFShortExport};
@ -312,9 +312,10 @@ impl ArchiveBuilderBuilder for LlvmArchiveBuilderBuilder {
impl<'a> LlvmArchiveBuilder<'a> { impl<'a> LlvmArchiveBuilder<'a> {
fn build_with_llvm(&mut self, output: &Path) -> io::Result<bool> { fn build_with_llvm(&mut self, output: &Path) -> io::Result<bool> {
let kind = &*self.sess.target.archive_format; let kind = &*self.sess.target.archive_format;
let kind = kind.parse::<ArchiveKind>().map_err(|_| kind).unwrap_or_else(|kind| { let kind = kind
self.sess.fatal(&format!("Don't know how to build archive of type: {}", kind)) .parse::<ArchiveKind>()
}); .map_err(|_| kind)
.unwrap_or_else(|kind| self.sess.emit_fatal(UnknownArchiveKind { kind: kind }));
let mut additions = mem::take(&mut self.additions); let mut additions = mem::take(&mut self.additions);
let mut strings = Vec::new(); let mut strings = Vec::new();

View file

@ -111,3 +111,9 @@ pub(crate) struct DlltoolFailImportLibrary<'a> {
pub stdout: Cow<'a, str>, pub stdout: Cow<'a, str>,
pub stderr: Cow<'a, str>, pub stderr: Cow<'a, str>,
} }
#[derive(SessionDiagnostic)]
#[diag(codegen_llvm::unknown_archive_kind)]
pub(crate) struct UnknownArchiveKind<'a> {
pub kind: &'a str,
}

View file

@ -48,3 +48,6 @@ codegen_llvm_error_calling_dlltool =
codegen_llvm_dlltool_fail_import_library = codegen_llvm_dlltool_fail_import_library =
Dlltool could not create import library: {$stdout}\n{$stderr} Dlltool could not create import library: {$stdout}\n{$stderr}
codegen_llvm_unknown_archive_kind =
Don't know how to build archive of type: {$kind}