]> git.lizzy.rs Git - rust.git/commitdiff
Revert "Remove macOS fat archive support from LlvmArchiveBuilder"
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>
Fri, 27 Jan 2023 11:46:27 +0000 (11:46 +0000)
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>
Fri, 27 Jan 2023 11:46:27 +0000 (11:46 +0000)
This reverts commit 047c7cc60c05e2cf182c6f578581cf2a67b1d0ff.

compiler/rustc_codegen_llvm/src/back/archive.rs

index 426f57c0608009dd437c508b1944f3a2305fc518..b00676b7c592b31e900648904e388670100b09c5 100644 (file)
@@ -15,8 +15,8 @@
 use crate::llvm::archive_ro::{ArchiveRO, Child};
 use crate::llvm::{self, ArchiveKind, LLVMMachineType, LLVMRustCOFFShortExport};
 use rustc_codegen_ssa::back::archive::{
-    get_native_object_symbols, ArArchiveBuilder, ArchiveBuildFailure, ArchiveBuilder,
-    ArchiveBuilderBuilder, UnknownArchiveKind,
+    get_native_object_symbols, try_extract_macho_fat_archive, ArArchiveBuilder,
+    ArchiveBuildFailure, ArchiveBuilder, ArchiveBuilderBuilder, UnknownArchiveKind,
 };
 
 use rustc_session::cstore::DllImport;
@@ -66,7 +66,13 @@ fn add_archive(
         archive: &Path,
         skip: Box<dyn FnMut(&str) -> bool + 'static>,
     ) -> io::Result<()> {
-        let archive_ro = match ArchiveRO::open(archive) {
+        let mut archive = archive.to_path_buf();
+        if self.sess.target.llvm_target.contains("-apple-macosx") {
+            if let Some(new_archive) = try_extract_macho_fat_archive(&self.sess, &archive)? {
+                archive = new_archive
+            }
+        }
+        let archive_ro = match ArchiveRO::open(&archive) {
             Ok(ar) => ar,
             Err(e) => return Err(io::Error::new(io::ErrorKind::Other, e)),
         };
@@ -74,7 +80,7 @@ fn add_archive(
             return Ok(());
         }
         self.additions.push(Addition::Archive {
-            path: archive.to_path_buf(),
+            path: archive,
             archive: archive_ro,
             skip: Box::new(skip),
         });