gcc-14/GCC14-1004-riscv-lib64.patch
YunQiang Su c5c2de5151 Fix build on RISC-V 64
Update symbol list for RISC-V 64 in GCC14-1001-libstdc++-compat.patch
New patch: GCC14-1004-riscv-lib64.patch. See: https://gitee.com/openeuler/gcc/pulls/241
Disable multilib.
2024-12-10 17:42:12 +08:00

67 lines
2.1 KiB
Diff

From 8c8e61a37b253317a55031527a351f433a4192f7 Mon Sep 17 00:00:00 2001
From: YunQiang Su <yunqiang@isrc.iscas.ac.cn>
Date: Mon, 14 Oct 2024 10:09:46 +0800
Subject: [PATCH 3/3] RISC-V: Install libstdc++/libcc1 etc to /lib64 instead of
lib
The problem is that if we are configured with `--disable-multilib`,
gcc -print-multi-os-directory
outputs
.
Thus the dest to install libraries is set to
/usr/lib/.
While other platforms (x86-64, arm64) it will be
/usr/lib/../lib64
Let's sync riscv64 with them
Another problem is that
gcc -print-file-name=libzstd.so.1
will output
/usr/lib64/lp64d/../lib64/libzstd.so.1
which is also need to patched.
---
gcc/config.gcc | 3 +++
gcc/config/riscv/linux.h | 2 ++
gcc/config/riscv/t-openEuler | 2 ++
3 files changed, 7 insertions(+)
create mode 100644 gcc/config/riscv/t-openEuler
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 95c91ee02..531e7fa45 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2490,6 +2490,9 @@ riscv*-*-linux*)
xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
*) echo "Unknown value for enable_multilib"; exit 1
esac
+ case "x${target_vendor}" in
+ xopenEuler) tmake_file="${tmake_file} riscv/t-openEuler"
+ esac
tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
gnu_ld=yes
diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
index 3c3562271..2acbdc688 100644
--- a/gcc/config/riscv/linux.h
+++ b/gcc/config/riscv/linux.h
@@ -62,6 +62,8 @@ along with GCC; see the file COPYING3. If not see
%{static:-static} %{static-pie:-static -pie --no-dynamic-linker -z text}}"
#define STARTFILE_PREFIX_SPEC \
+ "/lib" XLEN_SPEC "/ " \
+ "/usr/lib" XLEN_SPEC "/ " \
"/lib" XLEN_SPEC "/" ABI_SPEC "/ " \
"/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ " \
"/lib/ " \
diff --git a/gcc/config/riscv/t-openEuler b/gcc/config/riscv/t-openEuler
new file mode 100644
index 000000000..26541dd08
--- /dev/null
+++ b/gcc/config/riscv/t-openEuler
@@ -0,0 +1,2 @@
+MULTILIB_OPTIONS = mabi=lp64d
+MULTILIB_DIRNAMES = ../lib64
--
2.43.0