aboutsummaryrefslogtreecommitdiffstats
path: root/community/rust/alpine-target.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/rust/alpine-target.patch')
-rw-r--r--community/rust/alpine-target.patch85
1 files changed, 78 insertions, 7 deletions
diff --git a/community/rust/alpine-target.patch b/community/rust/alpine-target.patch
index baffdede76..6b8f9da678 100644
--- a/community/rust/alpine-target.patch
+++ b/community/rust/alpine-target.patch
@@ -1,4 +1,4 @@
-From: Shiz <hi@shiz.me>
+From: Shiz <hi@shiz.me>, updated by Rasmus Thomsen <oss@cogitri.dev> on 6th of July 2019
Date: Thu, 20 Aug 2017 01:52:36 +0200
Last-Updated: Sat, 28 Oct 2017 20:23:00 +0200
Subject: [PATCH] Add Alpine targets
@@ -7,16 +7,18 @@ This adds `$arch-alpine-linux-musl` targets to Rust to encode our toolchain
and distribution-specific quirks instead of polluting the main musl target of
`$arch-unknown-linux-musl`.
---- a/src/librustc_target/spec/mod.rs.orig 2019-05-23 21:05:45.173347119 +0200
-+++ b/src/librustc_target/spec/mod.rs 2019-05-23 21:06:39.006681699 +0200
-@@ -328,6 +328,10 @@
+--- a/src/librustc_target/spec/mod.rs.orig 2019-05-23 21:05:45.173347119 +0200
++++ b/src/librustc_target/spec/mod.rs 2019-05-23 21:06:39.006681699 +0200
+@@ -328,6 +328,12 @@ macro_rules! supported_targets {
}
supported_targets! {
+ ("i586-alpine-linux-musl", i586_alpine_linux_musl),
+ ("x86_64-alpine-linux-musl", x86_64_alpine_linux_musl),
+ ("aarch64-alpine-linux-musl", aarch64_alpine_linux_musl),
-+ ("arm-alpine-linux-musleabihf", arm_alpine_linux_musleabihf),
++ ("armv6-alpine-linux-musleabihf", armv6_alpine_linux_musleabihf),
++ ("armv7-alpine-linux-musleabihf", armv7_alpine_linux_musleabihf),
++ ("powerpc64le-alpine-linux-musl", powerpc64le_alpine_linux_musl),
("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
@@ -136,8 +138,8 @@ and distribution-specific quirks instead of polluting the main musl target of
+ })
+}
--- /dev/null
-+++ b/src/librustc_target/spec/arm_alpine_linux_musleabihf.rs
-@@ -0,0 +1,40 @@
++++ b/src/librustc_target/spec/armv6_alpine_linux_musleabihf.rs
+@@ -0,0 +1,41 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
@@ -174,6 +176,75 @@ and distribution-specific quirks instead of polluting the main musl target of
+ linker_flavor: LinkerFlavor::Gcc,
+ options: TargetOptions {
+ abi_blacklist: super::arm_base::abi_blacklist(),
++ target_mcount: "\u{1}mcount".to_string(),
++ .. base
++ },
++ })
++}
+--- /dev/null
++++ b/src/librustc_target/spec/armv7_alpine_linux_musleabihf.rs
+@@ -0,0 +1,34 @@
++use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
++
++// This target is for musl Linux on ARMv7 without thumb-mode or NEON.
++
++pub fn target() -> TargetResult {
++ let mut base = super::linux_musl_base::opts();
++ base.crt_static_default = false;
++ base.static_position_independent_executables = true;
++ base.need_rpath = true;
++
++ Ok(Target {
++ llvm_target: "armv7-unknown-linux-muslabihf".to_string(),
++ target_endian: "little".to_string(),
++ target_pointer_width: "32".to_string(),
++ target_c_int_width: "32".to_string(),
++ data_layout: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64".to_string(),
++ arch: "arm".to_string(),
++ target_os: "linux".to_string(),
++ target_env: "musl".to_string(),
++ target_vendor: "alpine".to_string(),
++ linker_flavor: LinkerFlavor::Gcc,
++
++ // Most of these settings are copied from the armv7_unknown_linux_gnueabihf
++ // target.
++ options: TargetOptions {
++ features: "+v7,+vfp3,+d16,+thumb2,-neon".to_string(),
++ cpu: "generic".to_string(),
++ max_atomic_width: Some(64),
++ abi_blacklist: super::arm_base::abi_blacklist(),
++ target_mcount: "\u{1}mcount".to_string(),
++ .. base
++ }
++ })
++}
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc64le_alpine_linux_musl.rs
+@@ -0,0 +1,28 @@
++use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
++
++pub fn target() -> TargetResult {
++ let mut base = super::linux_musl_base::opts();
++ base.cpu = "ppc64le".to_string();
++ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
++ base.max_atomic_width = Some(64);
++ base.crt_static_default = false;
++ base.static_position_independent_executables = true;
++ base.need_rpath = true;
++
++ Ok(Target {
++ llvm_target: "powerpc64le-alpine-linux-musl".to_string(),
++ target_endian: "little".to_string(),
++ target_pointer_width: "64".to_string(),
++ target_c_int_width: "32".to_string(),
++ data_layout: "e-m:e-i64:64-n32:64".to_string(),
++ arch: "powerpc64".to_string(),
++ target_os: "linux".to_string(),
++ target_env: "musl".to_string(),
++ target_vendor: "alpine".to_string(),
++ linker_flavor: LinkerFlavor::Gcc,
++ options: TargetOptions {
++ target_mcount: "_mcount".to_string(),
+ .. base
+ },
+ })