summaryrefslogtreecommitdiff
path: root/0001-add-support-for-ppc64le.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-add-support-for-ppc64le.patch')
-rw-r--r--0001-add-support-for-ppc64le.patch165
1 files changed, 165 insertions, 0 deletions
diff --git a/0001-add-support-for-ppc64le.patch b/0001-add-support-for-ppc64le.patch
new file mode 100644
index 0000000..30b86e1
--- /dev/null
+++ b/0001-add-support-for-ppc64le.patch
@@ -0,0 +1,165 @@
+From 85c7f9262e9d4fbfdaa5d7bc22a85eb5300fcca0 Mon Sep 17 00:00:00 2001
+From: jcf <chunfu.jian@shingroup.cn>
+Date: Wed, 12 Jun 2024 09:14:32 +0000
+Subject: [PATCH] add support for ppc64le
+
+---
+ compiler/rustc_target/src/spec/mod.rs | 2 ++
+ .../spec/targets/ppc64le_unknown_freebsd.rs | 23 +++++++++++++++++++
+ .../spec/targets/ppc64le_unknown_linux_gnu.rs | 23 +++++++++++++++++++
+ .../targets/ppc64le_unknown_linux_musl.rs | 23 +++++++++++++++++++
+ src/bootstrap/configure.py | 5 ++++
+ vendor/openssl-src-300.5.0+3.5.0/src/lib.rs | 3 +++
+ vendor/target-lexicon-0.13.1/src/targets.rs | 3 +++
+ 7 files changed, 82 insertions(+)
+ create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
+
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index 7234d1dc6..70d44f815 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -1760,6 +1760,8 @@ supported_targets! {
+ ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
+ ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
+ ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
++ ("ppc64le-unknown-linux-gnu", ppc64le_unknown_linux_gnu),
++ ("ppc64le-unknown-linux-musl", ppc64le_unknown_linux_musl),
+ ("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
+ ("s390x-unknown-linux-musl", s390x_unknown_linux_musl),
+ ("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu),
+diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
+new file mode 100644
+index 000000000..c02321db7
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
+@@ -0,0 +1,23 @@
++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
++
++pub(crate) fn target() -> Target {
++ let mut base = base::freebsd::opts();
++ base.cpu = "ppc64le".into();
++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
++ base.max_atomic_width = Some(64);
++ base.stack_probes = StackProbeType::Inline;
++
++ Target {
++ llvm_target: "ppc64le-unknown-freebsd".into(),
++ metadata: crate::spec::TargetMetadata {
++ description: None,
++ tier: None,
++ host_tools: None,
++ std: None,
++ },
++ pointer_width: 64,
++ data_layout: "e-m:e-Fn32-i64:64-n32:64".into(),
++ arch: "powerpc64".into(),
++ options: TargetOptions { mcount: "_mcount".into(), ..base },
++ }
++}
+diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
+new file mode 100644
+index 000000000..13423b9c5
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
+@@ -0,0 +1,23 @@
++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
++
++pub(crate) fn target() -> Target {
++ let mut base = base::linux_gnu::opts();
++ base.cpu = "ppc64le".into();
++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
++ base.max_atomic_width = Some(64);
++ base.stack_probes = StackProbeType::Inline;
++
++ Target {
++ llvm_target: "ppc64le-unknown-linux-gnu".into(),
++ metadata: crate::spec::TargetMetadata {
++ description: None,
++ tier: None,
++ host_tools: None,
++ std: None,
++ },
++ pointer_width: 64,
++ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
++ arch: "powerpc64".into(),
++ options: TargetOptions { mcount: "_mcount".into(), ..base },
++ }
++}
+diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
+new file mode 100644
+index 000000000..3f8a02be7
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
+@@ -0,0 +1,23 @@
++use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
++
++pub(crate) fn target() -> Target {
++ let mut base = base::linux_musl::opts();
++ base.cpu = "ppc64le".into();
++ base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
++ base.max_atomic_width = Some(64);
++ base.stack_probes = StackProbeType::Inline;
++
++ Target {
++ llvm_target: "ppc64le-unknown-linux-musl".into(),
++ metadata: crate::spec::TargetMetadata {
++ description: None,
++ tier: None,
++ host_tools: None,
++ std: None,
++ },
++ pointer_width: 64,
++ data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
++ arch: "powerpc64".into(),
++ options: TargetOptions { mcount: "_mcount".into(), ..base },
++ }
++}
+diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
+index 0d4d6e0ff..5d0e213b3 100755
+--- a/src/bootstrap/configure.py
++++ b/src/bootstrap/configure.py
+@@ -259,6 +259,11 @@ v(
+ "target.powerpc64le-unknown-linux-musl.musl-root",
+ "powerpc64le-unknown-linux-musl install directory",
+ )
++v(
++ "musl-root-ppc64le",
++ "target.ppc64le-unknown-linux-musl.musl-root",
++ "ppc64le-unknown-linux-musl install directory",
++)
+ v(
+ "musl-root-riscv32gc",
+ "target.riscv32gc-unknown-linux-musl.musl-root",
+diff --git a/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs b/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs
+index f7d19d95d..9b574b1e5 100644
+--- a/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs
++++ b/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs
+@@ -368,6 +368,9 @@ impl Build {
+ "powerpc64le-unknown-freebsd" => "BSD-ppc64le",
+ "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
+ "powerpc64le-unknown-linux-musl" => "linux-ppc64le",
++ "ppc64le-unknown-freebsd" => "BSD-ppc64le",
++ "ppc64le-unknown-linux-gnu" => "linux-ppc64le",
++ "ppc64le-unknown-linux-musl" => "linux-ppc64le",
+ "powerpc64le-alpine-linux-musl" => "linux-ppc64le",
+ "powerpc64le-chimera-linux-musl" => "linux-ppc64le",
+ "riscv64gc-unknown-freebsd" => "BSD-riscv64",
+diff --git a/vendor/target-lexicon-0.13.1/src/targets.rs b/vendor/target-lexicon-0.13.1/src/targets.rs
+index 83c0eac8c..61b7fcc33 100644
+--- a/vendor/target-lexicon-0.13.1/src/targets.rs
++++ b/vendor/target-lexicon-0.13.1/src/targets.rs
+@@ -1811,6 +1811,9 @@ mod tests {
+ "powerpc64le-unknown-freebsd",
+ "powerpc64le-unknown-linux-gnu",
+ "powerpc64le-unknown-linux-musl",
++ "ppc64le-unknown-freebsd",
++ "ppc64le-unknown-linux-gnu",
++ "ppc64le-unknown-linux-musl",
+ "powerpc64-unknown-freebsd",
+ "powerpc64-unknown-linux-gnu",
+ "powerpc64-unknown-linux-musl",
+--
+2.49.0
+