aboutsummaryrefslogtreecommitdiff
path: root/lang/rust/patches/09-add_x86_64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'lang/rust/patches/09-add_x86_64.patch')
-rw-r--r--lang/rust/patches/09-add_x86_64.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/lang/rust/patches/09-add_x86_64.patch b/lang/rust/patches/09-add_x86_64.patch
new file mode 100644
index 0000000..b1e2b4b
--- /dev/null
+++ b/lang/rust/patches/09-add_x86_64.patch
@@ -0,0 +1,38 @@
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/x86_64_openwrt_linux_musl.rs
+@@ -0,0 +1,25 @@
++use crate::spec::{LinkerFlavor, SanitizerSet, StackProbeType, Target};
++
++pub fn target() -> Target {
++ let mut base = super::linux_musl_base::opts();
++ base.cpu = "x86-64".into();
++ base.max_atomic_width = Some(64);
++ base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m64".into());
++ // don't use probe-stack=inline-asm until rust#83139 and rust#84667 are resolved
++ base.stack_probes = StackProbeType::Call;
++ base.static_position_independent_executables = true;
++ base.supported_sanitizers = SanitizerSet::ADDRESS
++ | SanitizerSet::CFI
++ | SanitizerSet::LEAK
++ | SanitizerSet::MEMORY
++ | SanitizerSet::THREAD;
++
++ Target {
++ llvm_target: "x86_64-unknown-linux-musl".into(),
++ pointer_width: 64,
++ data_layout: "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
++ .into(),
++ arch: "x86_64".into(),
++ options: base,
++ }
++}
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -1020,6 +1020,7 @@
+ ("armv7-openwrt-linux-muslgnueabi", armv7_openwrt_linux_muslgnueabi),
+ ("armv7-openwrt-linux-muslgnueabihf", armv7_openwrt_linux_muslgnueabihf),
+ ("powerpc64-openwrt-linux-musl", powerpc64_openwrt_linux_musl),
++ ("x86_64-openwrt-linux-musl", x86_64_openwrt_linux_musl),
+ }
+
+ /// Warnings encountered when parsing the target `json`.