summaryrefslogtreecommitdiff
path: root/0007-add-lowlevellock_2_17_c.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-03 06:28:41 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-03 06:28:41 +0000
commitd20db0561a6a36f914fde030512503b114ef9a0c (patch)
treed4e5e3494d95c269a1cee6195f11bf3201bcadbf /0007-add-lowlevellock_2_17_c.patch
parent016343d99b1b269d7246ef1e143d4b54914433d4 (diff)
Diffstat (limited to '0007-add-lowlevellock_2_17_c.patch')
-rw-r--r--0007-add-lowlevellock_2_17_c.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/0007-add-lowlevellock_2_17_c.patch b/0007-add-lowlevellock_2_17_c.patch
new file mode 100644
index 0000000..b516e77
--- /dev/null
+++ b/0007-add-lowlevellock_2_17_c.patch
@@ -0,0 +1,68 @@
+From 3df6f22e5fde470a6e0242e582e58919493bdd54 Mon Sep 17 00:00:00 2001
+From: Roland McGrath <roland@hack.frob.com>
+Date: Tue, 15 Jul 2014 15:23:06 -0700
+Subject: [PATCH 7/9] build extra lipthreadcond so
+
+since 78fe624d44b8f6489b2d0de9bfdc09290a719a7, lowlevellock.c depends futex-internal.h which uses the private symbol __GI___libc_fatal of glibc.
+We can't reference it in libpthread-2.17.so. Therefore, recompile in libphtread-2.17.so
+
+---
+ nptl_2_17/lowlevellock_2_17.c | 46 ++++++++++++++++++++++
+ 2 files changed, 46 insertions(+)
+ create mode 100644 nptl_2_17/lowlevellock_2_17.c
+
+diff --git a/nptl_2_17/lowlevellock_2_17.c b/nptl_2_17/lowlevellock_2_17.c
+new file mode 100644
+index 00000000..bf1ca6b9
+--- /dev/null
++++ b/nptl_2_17/lowlevellock_2_17.c
+@@ -0,0 +1,46 @@
++/* low level locking for pthread library. Generic futex-using version.
++ Copyright (C) 2003-2018 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <http://www.gnu.org/licenses/>. */
++
++#include <errno.h>
++#include <sysdep.h>
++#include <lowlevellock.h>
++#include <sys/time.h>
++#include <atomic.h>
++
++void
++__lll_lock_wait_private (int *futex)
++{
++ if (*futex == 2)
++ lll_futex_wait (futex, 2, LLL_PRIVATE); /* Wait if *futex == 2. */
++
++ while (atomic_exchange_acq (futex, 2) != 0)
++ lll_futex_wait (futex, 2, LLL_PRIVATE); /* Wait if *futex == 2. */
++}
++
++
++/* This function doesn't get included in libc. */
++void
++__lll_lock_wait (int *futex, int private)
++{
++ if (*futex == 2)
++ lll_futex_wait (futex, 2, private); /* Wait if *futex == 2. */
++
++ while (atomic_exchange_acq (futex, 2) != 0)
++ lll_futex_wait (futex, 2, private); /* Wait if *futex == 2. */
++}
+--
+2.30.0
+