From 15adbf6e086794d197e744db815476994b9ce3d7 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 12 Feb 2020 12:06:14 +0100 Subject: [PATCH] Properly use the darwin archive format on Apple targets See https://github.com/servo/servo/issues/25550. --- src/librustc_codegen_llvm/llvm/ffi.rs | 1 + src/librustc_codegen_llvm/llvm/mod.rs | 1 + src/librustc_target/spec/apple_base.rs | 2 +- src/rustllvm/ArchiveWrapper.cpp | 3 +++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs index 146b7d3d76c5e..fca4b1c598c37 100644 --- a/src/librustc_codegen_llvm/llvm/ffi.rs +++ b/src/librustc_codegen_llvm/llvm/ffi.rs @@ -459,6 +459,7 @@ pub enum ArchiveKind { Other, K_GNU, K_BSD, + K_DARWIN, K_COFF, } diff --git a/src/librustc_codegen_llvm/llvm/mod.rs b/src/librustc_codegen_llvm/llvm/mod.rs index eb13d6a575fe8..96014cbee5da1 100644 --- a/src/librustc_codegen_llvm/llvm/mod.rs +++ b/src/librustc_codegen_llvm/llvm/mod.rs @@ -69,6 +69,7 @@ impl FromStr for ArchiveKind { match s { "gnu" => Ok(ArchiveKind::K_GNU), "bsd" => Ok(ArchiveKind::K_BSD), + "darwin" => Ok(ArchiveKind::K_DARWIN), "coff" => Ok(ArchiveKind::K_COFF), _ => Err(()), } diff --git a/src/librustc_target/spec/apple_base.rs b/src/librustc_target/spec/apple_base.rs index 325efd10973cd..d116ddf952aaa 100644 --- a/src/librustc_target/spec/apple_base.rs +++ b/src/librustc_target/spec/apple_base.rs @@ -26,7 +26,7 @@ pub fn opts() -> TargetOptions { has_rpath: true, dll_prefix: "lib".to_string(), dll_suffix: ".dylib".to_string(), - archive_format: "bsd".to_string(), + archive_format: "darwin".to_string(), pre_link_args: LinkArgs::new(), has_elf_tls: version >= (10, 7), abi_return_struct_as_int: true, diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp index 678d787571ed7..93704638f8351 100644 --- a/src/rustllvm/ArchiveWrapper.cpp +++ b/src/rustllvm/ArchiveWrapper.cpp @@ -38,6 +38,7 @@ enum class LLVMRustArchiveKind { Other, GNU, BSD, + DARWIN, COFF, }; @@ -47,6 +48,8 @@ static Archive::Kind fromRust(LLVMRustArchiveKind Kind) { return Archive::K_GNU; case LLVMRustArchiveKind::BSD: return Archive::K_BSD; + case LLVMRustArchiveKind::DARWIN: + return Archive::K_DARWIN; case LLVMRustArchiveKind::COFF: return Archive::K_COFF; default: