aboutsummaryrefslogtreecommitdiffstats
path: root/community/rust/link-musl-dynamically.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/rust/link-musl-dynamically.patch')
-rw-r--r--community/rust/link-musl-dynamically.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/community/rust/link-musl-dynamically.patch b/community/rust/link-musl-dynamically.patch
new file mode 100644
index 0000000000..20a41fe3e7
--- /dev/null
+++ b/community/rust/link-musl-dynamically.patch
@@ -0,0 +1,41 @@
+We don't need those, we provide musl ourselves.
+--- rustc-1.35.0-src/src/bootstrap/compile.rs
++++ rustc-1.35.0-src/src/bootstrap/compile.rs
+@@ -114,20 +114,7 @@ impl Step for Std {
+ fn copy_third_party_objects(builder: &Builder<'_>, compiler: &Compiler, target: Interned<String>) {
+ let libdir = builder.sysroot_libdir(*compiler, target);
+
+- // Copies the crt(1,i,n).o startup objects
+- //
+- // Since musl supports fully static linking, we can cross link for it even
+- // with a glibc-targeting toolchain, given we have the appropriate startup
+- // files. As those shipped with glibc won't work, copy the ones provided by
+- // musl so we have them on linux-gnu hosts.
+- if target.contains("musl") {
+- for &obj in &["crt1.o", "crti.o", "crtn.o"] {
+- builder.copy(
+- &builder.musl_root(target).unwrap().join("lib").join(obj),
+- &libdir.join(obj),
+- );
+- }
+- } else if target.ends_with("-wasi") {
++ if target.ends_with("-wasi") {
+ for &obj in &["crt1.o"] {
+ builder.copy(
+ &builder.wasi_root(target).unwrap().join("lib/wasm32-wasi").join(obj),
+--- rustc-1.35.0-src/vendor/libc/src/unix/mod.rs
++++ rustc-1.35.0-src/vendor/libc/src/unix/mod.rs
+@@ -306,13 +306,6 @@ cfg_if! {
+ } else if #[cfg(feature = "use_std")] {
+ // cargo build, don't pull in anything extra as the libstd dep
+ // already pulls in all libs.
+- } else if #[cfg(target_env = "musl")] {
+- #[cfg_attr(feature = "rustc-dep-of-std",
+- link(name = "c", kind = "static",
+- cfg(target_feature = "crt-static")))]
+- #[cfg_attr(feature = "rustc-dep-of-std",
+- link(name = "c", cfg(not(target_feature = "crt-static"))))]
+- extern {}
+ } else if #[cfg(target_os = "emscripten")] {
+ #[link(name = "c")]
+ extern {}