diff --git a/0001-add-ppc64le-support.patch b/0001-add-ppc64le-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..0cb2997028959a253b953ebd1d794c683a9dcf68 --- /dev/null +++ b/0001-add-ppc64le-support.patch @@ -0,0 +1,160 @@ +From 83f3b91d750173fba477c8ab0174b1d95b128418 Mon Sep 17 00:00:00 2001 +From: JianChunfu +Date: Thu, 21 Mar 2024 16:30:14 +0800 +Subject: [PATCH] add ppc64le support + +--- + compiler/rustc_target/src/spec/mod.rs | 2 ++ + .../src/spec/ppc64le_unknown_freebsd.rs | 16 ++++++++++++++++ + .../src/spec/ppc64le_unknown_linux_gnu.rs | 16 ++++++++++++++++ + .../src/spec/ppc64le_unknown_linux_musl.rs | 16 ++++++++++++++++ + 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 | 4 ++-- + 8 files changed, 59 insertions(+), 2 deletions(-) + create mode 100644 compiler/rustc_target/src/spec/ppc64le_unknown_freebsd.rs + create mode 100644 compiler/rustc_target/src/spec/ppc64le_unknown_linux_gnu.rs + create mode 100644 compiler/rustc_target/src/spec/ppc64le_unknown_linux_musl.rs + +diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs +index 92678aed5..33b88af3c 100644 +--- a/compiler/rustc_target/src/spec/mod.rs ++++ b/compiler/rustc_target/src/spec/mod.rs +@@ -824,6 +824,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/ppc64le_unknown_freebsd.rs b/compiler/rustc_target/src/spec/ppc64le_unknown_freebsd.rs +new file mode 100644 +index 000000000..a8171bb56 +--- /dev/null ++++ b/compiler/rustc_target/src/spec/ppc64le_unknown_freebsd.rs +@@ -0,0 +1,16 @@ ++use crate::spec::{LinkerFlavor, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = super::freebsd_base::opts(); ++ base.cpu = "ppc64le".to_string(); ++ base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m64".to_string()); ++ base.max_atomic_width = Some(64); ++ ++ Target { ++ llvm_target: "ppc64le-unknown-freebsd".to_string(), ++ pointer_width: 64, ++ data_layout: "e-m:e-i64:64-n32:64".to_string(), ++ arch: "powerpc64".to_string(), ++ options: TargetOptions { mcount: "_mcount".to_string(), ..base }, ++ } ++} +diff --git a/compiler/rustc_target/src/spec/ppc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/ppc64le_unknown_linux_gnu.rs +new file mode 100644 +index 000000000..c4d2a2a89 +--- /dev/null ++++ b/compiler/rustc_target/src/spec/ppc64le_unknown_linux_gnu.rs +@@ -0,0 +1,16 @@ ++use crate::spec::{LinkerFlavor, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = super::linux_gnu_base::opts(); ++ base.cpu = "ppc64le".to_string(); ++ base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m64".to_string()); ++ base.max_atomic_width = Some(64); ++ ++ Target { ++ llvm_target: "ppc64le-unknown-linux-gnu".to_string(), ++ pointer_width: 64, ++ data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(), ++ arch: "powerpc64".to_string(), ++ options: TargetOptions { mcount: "_mcount".to_string(), ..base }, ++ } ++} +diff --git a/compiler/rustc_target/src/spec/ppc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/ppc64le_unknown_linux_musl.rs +new file mode 100644 +index 000000000..8b656abac +--- /dev/null ++++ b/compiler/rustc_target/src/spec/ppc64le_unknown_linux_musl.rs +@@ -0,0 +1,16 @@ ++use crate::spec::{LinkerFlavor, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ let mut base = super::linux_musl_base::opts(); ++ base.cpu = "ppc64le".to_string(); ++ base.pre_link_args.entry(LinkerFlavor::Gcc).or_default().push("-m64".to_string()); ++ base.max_atomic_width = Some(64); ++ ++ Target { ++ llvm_target: "ppc64le-unknown-linux-musl".to_string(), ++ pointer_width: 64, ++ data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".to_string(), ++ arch: "powerpc64".to_string(), ++ options: TargetOptions { mcount: "_mcount".to_string(), ..base }, ++ } ++} +diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py +index 94424cb45..b85046901 100755 +--- a/src/bootstrap/configure.py ++++ b/src/bootstrap/configure.py +@@ -142,6 +142,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("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs", + "rootfs in qemu testing, you probably don't want to use this") + v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs", +diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md +index d4a5f0e5a..a2e153d7b 100644 +--- a/src/doc/rustc/src/platform-support.md ++++ b/src/doc/rustc/src/platform-support.md +@@ -263,10 +263,12 @@ 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` | ? | | + `powerpc64-wrs-vxworks` | ? | | + `powerpc64le-unknown-linux-musl` | ? | | ++`ppc64le-unknown-linux-musl` | ? | | + `riscv32gc-unknown-linux-gnu` | | | RISC-V Linux (kernel 5.4, glibc 2.33) + `riscv32gc-unknown-linux-musl` | | | RISC-V Linux (kernel 5.4, musl + RISCV32 support patches) + `riscv32imc-esp-espidf` | ✓ | | RISC-V ESP-IDF +diff --git a/vendor/openssl-src/src/lib.rs b/vendor/openssl-src/src/lib.rs +index e71a8711a..185850067 100644 +--- a/vendor/openssl-src/src/lib.rs ++++ b/vendor/openssl-src/src/lib.rs +@@ -260,6 +260,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 2532b29d6..b40cdac4c 100644 +--- a/vendor/target-lexicon/src/targets.rs ++++ b/vendor/target-lexicon/src/targets.rs +@@ -1407,8 +1407,8 @@ mod tests { + "powerpc64-unknown-linux-gnu", + "powerpc64-unknown-linux-musl", + "powerpc64-wrs-vxworks", +- "powerpc64le-unknown-linux-gnu", +- "powerpc64le-unknown-linux-musl", ++ "ppc64le-unknown-linux-gnu", ++ "ppc64le-unknown-linux-musl", + "riscv32gc-unknown-linux-gnu", + "riscv32gc-unknown-linux-musl", + "riscv32i-unknown-none-elf", +-- +2.33.0 + diff --git a/rust.spec b/rust.spec index dae778133aceb0608cd7eeb5a83d86b81999aa32..68aa49210f3a0adadb69b8e79f1902737df95353 100644 --- a/rust.spec +++ b/rust.spec @@ -11,7 +11,7 @@ Name: rust Version: 1.76.0 -Release: 1 +Release: 2 Summary: The Rust Programming Language License: Apache-2.0 OR MIT URL: https://www.rust-lang.org @@ -30,6 +30,7 @@ Patch0001: 0001-Use-lld-provided-by-system.patch Patch0002: rustc-1.70.0-rust-gdb-substitute-path.patch Patch0003: CVE-2024-24575.patch Patch0004: CVE-2024-24577.patch +Patch0005: 0001-add-ppc64le-support.patch %{lua: function rust_triple(arch) local abi = "gnu" @@ -260,6 +261,7 @@ sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure %patch -P 0002 -p1 %patch -P 0003 -p1 %patch -P 0004 -p1 +%patch -P 0005 -p1 rm -rf vendor/curl-sys*/curl/ rm -rf vendor/jemalloc-sys/jemalloc/ rm -rf vendor/libffi-sys*/libffi/ @@ -489,7 +491,15 @@ export %{rust_env} %{_mandir}/man1/rustdoc.1* %{_mandir}/man1/cargo*.1* +%ifarch ppc64le +%files debugsource +/usr/lib/rustlib/etc/__pycache__/* +%endif + %changelog +* Mon Mar 25 2024 jianchunfu - 1.76.0-2 +- spec: Add support for ppc64le + * Tue Feb 20 2024 wangkai <13474090681@163.com> - 1.76.0-1 - Update to 1.76.0