aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch
diff options
context:
space:
mode:
authorTianling Shen <cnsztl@immortalwrt.org>2023-06-10 19:08:04 +0800
committerHauke Mehrtens <hauke@hauke-m.de>2023-06-16 19:47:39 +0200
commit7390068e4f89e09d8fc281fddeb2504f5412382e (patch)
treeb86d988b12d1b9e57838fcea46768a192441b996 /toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch
parentdee8ca626c7108540795506eb1675aff586d9066 (diff)
downloadupstream-7390068e4f89e09d8fc281fddeb2504f5412382e.tar.gz
upstream-7390068e4f89e09d8fc281fddeb2504f5412382e.tar.bz2
upstream-7390068e4f89e09d8fc281fddeb2504f5412382e.zip
toolchain: gcc: backport inline subword atomic support for riscv
RISC-V has no support for subword atomic operations; code currently generates libatomic library calls. This patch changes the default behavior to fast inline subword atomic calls that do not require libatomic. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org> (cherry picked from commit 7b4a966de88aa0e1f9b7faa62a4d6cb7b01e9f8f)
Diffstat (limited to 'toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch')
-rw-r--r--toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch b/toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch
new file mode 100644
index 0000000000..328c7be9ce
--- /dev/null
+++ b/toolchain/gcc/patches-12.x/701-riscv-linux-Don-t-add-latomic-with-pthread.patch
@@ -0,0 +1,36 @@
+From 203f3060dd363361b172f7295f42bb6bf5ac0b3b Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Sat, 23 Apr 2022 15:48:42 +0200
+Subject: [PATCH] riscv/linux: Don't add -latomic with -pthread
+
+Now that we have support for inline subword atomic operations, it is no
+longer necessary to link against libatomic. This also fixes testsuite
+failures because the framework does not properly set up the linker flags
+for finding libatomic.
+The use of atomic operations is also independent of the use of libpthread.
+
+gcc/
+ * config/riscv/linux.h (LIB_SPEC): Don't redefine.
+---
+ gcc/config/riscv/linux.h | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+--- a/gcc/config/riscv/linux.h
++++ b/gcc/config/riscv/linux.h
+@@ -35,16 +35,6 @@ along with GCC; see the file COPYING3.
+ #undef MUSL_DYNAMIC_LINKER
+ #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-riscv" XLEN_SPEC MUSL_ABI_SUFFIX ".so.1"
+
+-/* Because RISC-V only has word-sized atomics, it requries libatomic where
+- others do not. So link libatomic by default, as needed. */
+-#undef LIB_SPEC
+-#ifdef LD_AS_NEEDED_OPTION
+-#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC \
+- " %{pthread:" LD_AS_NEEDED_OPTION " -latomic " LD_NO_AS_NEEDED_OPTION "}"
+-#else
+-#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC " -latomic "
+-#endif
+-
+ #define ICACHE_FLUSH_FUNC "__riscv_flush_icache"
+
+ #define CPP_SPEC "%{pthread:-D_REENTRANT}"