From a640bce17d908a0691d53f22e5257353f694d9b6 Mon Sep 17 00:00:00 2001 From: q66 Date: Sun, 3 May 2020 17:55:50 +0200 Subject: [PATCH 05/15] Prefer libgcc_eh over libunwind on musl --- src/libunwind/build.rs | 16 ++-------------- src/libunwind/lib.rs | 2 +- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs index a24808b3..a1250889 100644 --- a/src/libunwind/build.rs +++ b/src/libunwind/build.rs @@ -5,15 +5,12 @@ fn main() { let target = env::var("TARGET").expect("TARGET was not set"); if cfg!(feature = "llvm-libunwind") - && ((target.contains("linux") && !target.contains("musl")) || target.contains("fuchsia")) + && (target.contains("linux") || target.contains("fuchsia")) { // Build the unwinding from libunwind C/C++ source code. llvm_libunwind::compile(); } else if target.contains("linux") { - if target.contains("musl") { - // linking for musl is handled in lib.rs - llvm_libunwind::compile(); - } else if !target.contains("android") { + if !target.contains("android") { println!("cargo:rustc-link-lib=gcc_s"); } } else if target.contains("freebsd") { @@ -105,15 +102,6 @@ mod llvm_libunwind { cfg.file(root.join("src").join(src)); } - if target_env == "musl" { - // use the same C compiler command to compile C++ code so we do not need to setup the - // C++ compiler env variables on the builders - cfg.cpp(false); - // linking for musl is handled in lib.rs - cfg.cargo_metadata(false); - println!("cargo:rustc-link-search=native={}", env::var("OUT_DIR").unwrap()); - } - cfg.compile("unwind"); } } diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs index 18d41be7..17f73d69 100644 --- a/src/libunwind/lib.rs +++ b/src/libunwind/lib.rs @@ -19,7 +19,7 @@ cfg_if::cfg_if! { } #[cfg(target_env = "musl")] -#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))] +#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))] #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))] extern "C" {} -- 2.26.2