diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-04-06 08:56:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-06 08:56:34 +0200 |
| commit | 84569f908636b0277fbc9085678ba0dc3bd3d9c0 (patch) | |
| tree | 42cab28247bea0104eb386c2c46d56a410519d39 /compiler/rustc_codegen_ssa/src | |
| parent | dea28d86b4c17523ada6bee2c9718fd5ebb3234f (diff) | |
| parent | 9d7090726d8c3c1bc267bb866415ca46051881a1 (diff) | |
Rollup merge of #123467 - dpaoliello:archcoff, r=wesleywiser
MSVC targets should use COFF as their archive format While adding support for Arm64EC I ran into an issue where the standard library's rlib was missing the "EC Symbol Table" which is required for the MSVC linker to find import library symbols (generated by Rust's `raw-dylib` feature) when building for EC. The root cause of the issue is that LLVM only generated symbol tables (including the EC Symbol Table) if the `ArchiveKind` is `COFF`, but the MSVC targets didn't set their archive format, so it was defaulting to GNU.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/archive.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/archive.rs b/compiler/rustc_codegen_ssa/src/back/archive.rs index 22b58c13949..ef55682d541 100644 --- a/compiler/rustc_codegen_ssa/src/back/archive.rs +++ b/compiler/rustc_codegen_ssa/src/back/archive.rs @@ -231,7 +231,11 @@ impl<'a> ArArchiveBuilder<'a> { "gnu" => ArchiveKind::Gnu, "bsd" => ArchiveKind::Bsd, "darwin" => ArchiveKind::Darwin, - "coff" => ArchiveKind::Coff, + "coff" => { + // FIXME: ar_archive_writer doesn't support COFF archives yet. + // https://github.com/rust-lang/ar_archive_writer/issues/9 + ArchiveKind::Gnu + } "aix_big" => ArchiveKind::AixBig, kind => { self.sess.dcx().emit_fatal(UnknownArchiveKind { kind }); |
