aboutsummaryrefslogtreecommitdiffstats
path: root/community/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
diff options
context:
space:
mode:
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.patch61
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");
+ }
+ }