!131 Add support for the ppc64le platform
From: @jianchunfu Reviewed-by: @wk333 Signed-off-by: @wk333
This commit is contained in:
commit
5bce29dead
160
0001-add-support-for-ppc64le.patch
Normal file
160
0001-add-support-for-ppc64le.patch
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
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 ++
|
||||||
|
.../src/spec/targets/ppc64le_unknown_freebsd.rs | 17 +++++++++++++++++
|
||||||
|
.../spec/targets/ppc64le_unknown_linux_gnu.rs | 17 +++++++++++++++++
|
||||||
|
.../spec/targets/ppc64le_unknown_linux_musl.rs | 17 +++++++++++++++++
|
||||||
|
src/bootstrap/configure.py | 2 ++
|
||||||
|
src/doc/rustc/src/platform-support.md | 2 ++
|
||||||
|
vendor/openssl-src/src/lib.rs | 3 +++
|
||||||
|
vendor/target-lexicon/src/targets.rs | 3 +++
|
||||||
|
8 files changed, 63 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 6c698c5b0..29575b9aa 100644
|
||||||
|
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||||
|
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||||
|
@@ -1421,6 +1421,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..41189b6fa
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
|
||||||
|
+
|
||||||
|
+pub 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(),
|
||||||
|
+ 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..f60b84447
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
|
||||||
|
+
|
||||||
|
+pub 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(),
|
||||||
|
+ 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..d497b674b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs
|
||||||
|
@@ -0,0 +1,17 @@
|
||||||
|
+use crate::spec::{base, Cc, LinkerFlavor, Lld, StackProbeType, Target, TargetOptions};
|
||||||
|
+
|
||||||
|
+pub 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(),
|
||||||
|
+ 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 d34c19a47..b6adafc5e 100755
|
||||||
|
--- a/src/bootstrap/configure.py
|
||||||
|
+++ b/src/bootstrap/configure.py
|
||||||
|
@@ -126,6 +126,8 @@ v("musl-root-mips64", "target.mips64-unknown-linux-muslabi64.musl-root",
|
||||||
|
"mips64-unknown-linux-muslabi64 install directory")
|
||||||
|
v("musl-root-mips64el", "target.mips64el-unknown-linux-muslabi64.musl-root",
|
||||||
|
"mips64el-unknown-linux-muslabi64 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",
|
||||||
|
"riscv32gc-unknown-linux-musl install directory")
|
||||||
|
v("musl-root-riscv64gc", "target.riscv64gc-unknown-linux-musl.musl-root",
|
||||||
|
diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md
|
||||||
|
index f648a60b6..a905f27d7 100644
|
||||||
|
--- a/src/doc/rustc/src/platform-support.md
|
||||||
|
+++ b/src/doc/rustc/src/platform-support.md
|
||||||
|
@@ -330,8 +330,10 @@ target | std | host | notes
|
||||||
|
`powerpc-wrs-vxworks` | ? | |
|
||||||
|
`powerpc64-unknown-freebsd` | ✓ | ✓ | PPC64 FreeBSD (ELFv1 and ELFv2)
|
||||||
|
`powerpc64le-unknown-freebsd` | | | PPC64LE FreeBSD
|
||||||
|
+`ppc64le-unknown-freebsd` | | | PPC64LE FreeBSD
|
||||||
|
`powerpc-unknown-freebsd` | | | PowerPC FreeBSD
|
||||||
|
`powerpc64-unknown-linux-musl` | ? | |
|
||||||
|
+`ppc64le-unknown-linux-musl` | ? | |
|
||||||
|
`powerpc64-wrs-vxworks` | ? | |
|
||||||
|
`powerpc64le-unknown-linux-musl` | ? | |
|
||||||
|
[`powerpc64-unknown-openbsd`](platform-support/openbsd.md) | ✓ | ✓ | OpenBSD/powerpc64
|
||||||
|
diff --git a/vendor/openssl-src/src/lib.rs b/vendor/openssl-src/src/lib.rs
|
||||||
|
index 1264742dc..14427a70e 100644
|
||||||
|
--- a/vendor/openssl-src/src/lib.rs
|
||||||
|
+++ b/vendor/openssl-src/src/lib.rs
|
||||||
|
@@ -282,6 +282,9 @@ impl Build {
|
||||||
|
"powerpc64le-unknown-freebsd" => "BSD-generic64",
|
||||||
|
"powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
|
||||||
|
"powerpc64le-unknown-linux-musl" => "linux-ppc64le",
|
||||||
|
+ "ppc64le-unknown-freebsd" => "BSD-generic64",
|
||||||
|
+ "ppc64le-unknown-linux-gnu" => "linux-ppc64le",
|
||||||
|
+ "ppc64le-unknown-linux-musl" => "linux-ppc64le",
|
||||||
|
"riscv64gc-unknown-linux-gnu" => "linux-generic64",
|
||||||
|
"s390x-unknown-linux-gnu" => "linux64-s390x",
|
||||||
|
"s390x-unknown-linux-musl" => "linux64-s390x",
|
||||||
|
diff --git a/vendor/target-lexicon/src/targets.rs b/vendor/target-lexicon/src/targets.rs
|
||||||
|
index d03d202a0..7d7c0ee95 100644
|
||||||
|
--- a/vendor/target-lexicon/src/targets.rs
|
||||||
|
+++ b/vendor/target-lexicon/src/targets.rs
|
||||||
|
@@ -1624,6 +1624,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-ibm-aix",
|
||||||
|
"powerpc64-unknown-freebsd",
|
||||||
|
"powerpc64-unknown-linux-gnu",
|
||||||
|
--
|
||||||
|
2.44.0
|
||||||
|
|
||||||
10
rust.spec
10
rust.spec
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
Name: rust
|
Name: rust
|
||||||
Version: 1.77.0
|
Version: 1.77.0
|
||||||
Release: 4
|
Release: 5
|
||||||
Summary: The Rust Programming Language
|
Summary: The Rust Programming Language
|
||||||
License: Apache-2.0 OR MIT
|
License: Apache-2.0 OR MIT
|
||||||
URL: https://www.rust-lang.org
|
URL: https://www.rust-lang.org
|
||||||
@ -28,6 +28,7 @@ Patch0000: rustc-1.77.0-disable-libssh2.patch
|
|||||||
Patch0001: 0001-Use-lld-provided-by-system.patch
|
Patch0001: 0001-Use-lld-provided-by-system.patch
|
||||||
# Set a substitute-path in rust-gdb for standard library sources.
|
# Set a substitute-path in rust-gdb for standard library sources.
|
||||||
Patch0002: rustc-1.70.0-rust-gdb-substitute-path.patch
|
Patch0002: rustc-1.70.0-rust-gdb-substitute-path.patch
|
||||||
|
Patch0003: 0001-add-support-for-ppc64le.patch
|
||||||
|
|
||||||
%ifarch riscv64
|
%ifarch riscv64
|
||||||
Patch1000: embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch
|
Patch1000: embed-riscv64-target-abi-in-bc-when-plugin-_-lto-is-used.patch
|
||||||
@ -262,6 +263,7 @@ sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure
|
|||||||
%endif
|
%endif
|
||||||
%patch -P 0001 -p1
|
%patch -P 0001 -p1
|
||||||
%patch -P 0002 -p1
|
%patch -P 0002 -p1
|
||||||
|
%patch -P 0003 -p1
|
||||||
%ifarch riscv64
|
%ifarch riscv64
|
||||||
%patch -P 1000 -p1
|
%patch -P 1000 -p1
|
||||||
%endif
|
%endif
|
||||||
@ -321,6 +323,9 @@ fi
|
|||||||
# But there are two versions in openEuler. Why?
|
# But there are two versions in openEuler. Why?
|
||||||
# We don't have macros.clang so we need clang version here
|
# We don't have macros.clang so we need clang version here
|
||||||
# This is for avoiding rpm syntax error
|
# This is for avoiding rpm syntax error
|
||||||
|
%ifarch ppc64le
|
||||||
|
%global _arch powerpc64le
|
||||||
|
%endif
|
||||||
%global clang_maj_ver 17
|
%global clang_maj_ver 17
|
||||||
%if %{?clang_maj_ver} >= 17
|
%if %{?clang_maj_ver} >= 17
|
||||||
# This is the new one, used on openEuler 24.03 LTS or later
|
# This is the new one, used on openEuler 24.03 LTS or later
|
||||||
@ -519,6 +524,9 @@ export %{rust_env}
|
|||||||
%{_mandir}/man1/cargo*.1*
|
%{_mandir}/man1/cargo*.1*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 13 2024 jianchunfu <chunfu.jian@shingroup.cn> - 1.77.0-5
|
||||||
|
- spec: Add support for ppc64le
|
||||||
|
|
||||||
* Wed Jun 05 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 1.77.0-4
|
* Wed Jun 05 2024 Wenlong Zhang <zhangwenlong@loongson.cn> - 1.77.0-4
|
||||||
- disable musl for loongarch64
|
- disable musl for loongarch64
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user