diff options
Diffstat (limited to 'community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch')
-rw-r--r-- | community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch new file mode 100644 index 0000000000..d32841103a --- /dev/null +++ b/community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch @@ -0,0 +1,61 @@ +Additions for build.rs by q66, necessary for our musl setup. + +From 1eb558f246269606c6d8d73824ef6b44fa10764e Mon Sep 17 00:00:00 2001 +From: Samuel Holland <samuel@sholland.org> +Date: Sat, 9 Sep 2017 00:14:16 -0500 +Subject: [PATCH 06/16] Prefer libgcc_eh over libunwind for musl + +--- + src/libunwind/lib.rs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs +index 9182e349b19..0377fbb58fc 100644 +--- a/src/libunwind/lib.rs ++++ b/src/libunwind/lib.rs +@@ -23,6 +23,6 @@ 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 {} +diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs +index f24d957..28828e5 100644 +--- a/src/libunwind/build.rs ++++ b/src/libunwind/build.rs +@@ -5,15 +5,11 @@ 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") { +@@ -99,15 +95,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"); + } + } |