From 415f4f7cdada77ddd3dff4c4e6882139a1a09765 Mon Sep 17 00:00:00 2001 From: laokz Date: Thu, 14 Aug 2025 22:43:02 +0800 Subject: [PATCH] riscv64: switch to gcc14 toolchain - gcc12 built failure: relocation truncated to fit: R_RISCV_JAL - fix rdcycle instructor (cherry picked from commit 431e618600bd3f4408836f30ae3f1cfd2042d1f7) --- 1000-add-riscv-support.patch | 2 +- mvapich2.spec | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/1000-add-riscv-support.patch b/1000-add-riscv-support.patch index 707880f..bc67eab 100644 --- a/1000-add-riscv-support.patch +++ b/1000-add-riscv-support.patch @@ -10,7 +10,7 @@ +static inline cycles_t get_cycles() +{ + unsigned long clk; -+ asm volatile("rdcycle %0" : "=r" (clk)); ++ asm volatile("rdtime %0" : "=r" (clk)); + return clk; +} #else diff --git a/mvapich2.spec b/mvapich2.spec index cd24be5..f6f8cf6 100644 --- a/mvapich2.spec +++ b/mvapich2.spec @@ -2,7 +2,7 @@ Name: mvapich2 Version: 2.3.7 -Release: 1 +Release: 2 Summary: OSU MVAPICH2 MPI package License: BSD-3-Clause and mpich2 URL: http://mvapich.cse.ohio-state.edu @@ -12,7 +12,11 @@ Source2: mvapich2.macros.in Patch0001: 0001-mvapich23-unbundle-contrib-hwloc-and-osu_benchmarks.patch Patch1000: 1000-add-riscv-support.patch Patch1001: 0001-mvapich2-2.3.6-add-support-for-loongarch64.patch +%ifarch riscv64 +BuildRequires: gcc-toolset-14-gfortran python3-devel gcc-toolset-14-c++ gcc-toolset-14-libgcc gcc-toolset-14-libgfortran-devel gcc-toolset-14-binutils-devel +%else BuildRequires: gcc-gfortran python3-devel gcc-c++ +%endif BuildRequires: bison flex autoconf automake libtool BuildRequires: perl-Digest-MD5 hwloc-devel rdma-core-devel @@ -91,6 +95,11 @@ cp -pr default psm2 %set_build_flags export FFLAGS="$FFLAGS -fallow-argument-mismatch" export AR=ar +%ifarch riscv64 +export PATH=/opt/openEuler/gcc-toolset-14/root/usr/bin:$PATH +# Otherwise ld-2.42 cannot find its libopcodes-2.42.so +export LD_LIBRARY_PATH=/opt/openEuler/gcc-toolset-14/root/usr/lib64:$LD_LIBRARY_PATH +%endif %if "%toolchain" == "clang" export FFLAGS=$(echo $FFLAGS | sed -e 's|--config \/usr\/lib\/rpm\/generic-hardened-clang.cfg ||g') @@ -140,6 +149,10 @@ find . -name libtool -exec \ cd .. %install +%ifarch riscv64 +export PATH=/opt/openEuler/gcc-toolset-14/root/usr/bin:$PATH +export LD_LIBRARY_PATH=/opt/openEuler/gcc-toolset-14/root/usr/lib64:$LD_LIBRARY_PATH +%endif finish_install() { local LIBNAME="$1" local NAMEARCH="$1-%{_arch}" @@ -259,6 +272,11 @@ cd .. %changelog +* Fri Aug 15 2025 laokz - 2.3.7-2 +- riscv64: + * switch to gcc14 toolchain due to gcc12 'relocation truncated' error + * fix rdcycle instructor + * Fri Jul 25 2025 yaoxin <1024769339@qq.com> - 2.3.7-1 - Update to 2.3.7: * Removed several deprectated functions -- Gitee