diff options
author | Florian Weimer <fweimer@redhat.com> | 2021-02-22 18:30:52 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2021-02-22 18:30:52 +0100 |
commit | 2f4019de81024cc0d05a5b5cedb1afb28b59a836 (patch) | |
tree | f837cbd8ac7933828e56baa291384b7b99edeb07 | |
parent | 541e53c9ddd9ef543cc45b66c7597e63fa665414 (diff) | |
download | glibc-2f4019de81024cc0d05a5b5cedb1afb28b59a836.zip glibc-2f4019de81024cc0d05a5b5cedb1afb28b59a836.tar.gz glibc-2f4019de81024cc0d05a5b5cedb1afb28b59a836.tar.bz2 |
nptl: Move lowlevellock into libc [BZ #15648]
And export __lll_lock_wait and __lll_lock_wait_private as
GLIBC_PRIVATE. This should eliminate the need for the previous
riscv kludge.
-rw-r--r-- | nptl/Makefile | 3 | ||||
-rw-r--r-- | nptl/Versions | 2 | ||||
-rw-r--r-- | nptl/libc-lowlevellock.c | 20 | ||||
-rw-r--r-- | nptl/lowlevellock.c | 6 | ||||
-rw-r--r-- | sysdeps/nptl/lowlevellock.h | 6 | ||||
-rw-r--r-- | sysdeps/riscv/nptl/libc-lowlevellock.c | 8 |
6 files changed, 9 insertions, 36 deletions
diff --git a/nptl/Makefile b/nptl/Makefile index 5a7558d..62f368a 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -33,9 +33,9 @@ routines = \ forward \ libc-cancellation \ libc-cleanup \ - libc-lowlevellock \ libc_multiple_threads \ libc_pthread_init \ + lowlevellock \ old_pthread_cond_destroy \ old_pthread_cond_init \ pthread_atfork \ @@ -100,7 +100,6 @@ libpthread-routines = \ futex-internal \ herrno \ libpthread-compat \ - lowlevellock \ nptl-init \ nptlfreeres \ old_pthread_atfork \ diff --git a/nptl/Versions b/nptl/Versions index 7254ca4..694747b 100644 --- a/nptl/Versions +++ b/nptl/Versions @@ -77,6 +77,8 @@ libc { __libc_current_sigrtmin_private; __libc_dl_error_tsd; __libc_pthread_init; + __lll_lock_wait; + __lll_lock_wait_private; __pthread_attr_copy; __pthread_attr_destroy; __pthread_attr_init; diff --git a/nptl/libc-lowlevellock.c b/nptl/libc-lowlevellock.c deleted file mode 100644 index e840399..0000000 --- a/nptl/libc-lowlevellock.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright (C) 2003-2021 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 - <https://www.gnu.org/licenses/>. */ - -/* No difference to lowlevellock.c, except we lose a couple of functions. */ -#include <lowlevellock.c> diff --git a/nptl/lowlevellock.c b/nptl/lowlevellock.c index 1ea397d..7976c6d 100644 --- a/nptl/lowlevellock.c +++ b/nptl/lowlevellock.c @@ -35,10 +35,8 @@ __lll_lock_wait_private (int *futex) futex_wait ((unsigned int *) futex, 2, LLL_PRIVATE); /* Wait if *futex == 2. */ } } +libc_hidden_def (__lll_lock_wait_private) - -/* This function doesn't get included in libc. */ -#if IS_IN (libpthread) void __lll_lock_wait (int *futex, int private) { @@ -52,4 +50,4 @@ __lll_lock_wait (int *futex, int private) futex_wait ((unsigned int *) futex, 2, private); /* Wait if *futex == 2. */ } } -#endif +libc_hidden_def (__lll_lock_wait) diff --git a/sysdeps/nptl/lowlevellock.h b/sysdeps/nptl/lowlevellock.h index 0a2b413..176ba96 100644 --- a/sysdeps/nptl/lowlevellock.h +++ b/sysdeps/nptl/lowlevellock.h @@ -75,8 +75,10 @@ #define lll_cond_trylock(lock) \ __glibc_unlikely (atomic_compare_and_exchange_bool_acq (&(lock), 2, 0)) -extern void __lll_lock_wait_private (int *futex) attribute_hidden; -extern void __lll_lock_wait (int *futex, int private) attribute_hidden; +extern void __lll_lock_wait_private (int *futex); +libc_hidden_proto (__lll_lock_wait_private) +extern void __lll_lock_wait (int *futex, int private); +libc_hidden_proto (__lll_lock_wait) /* This is an expression rather than a statement even though its value is void, so that it can be used in a comma expression or as an expression diff --git a/sysdeps/riscv/nptl/libc-lowlevellock.c b/sysdeps/riscv/nptl/libc-lowlevellock.c deleted file mode 100644 index 9523fb4..0000000 --- a/sysdeps/riscv/nptl/libc-lowlevellock.c +++ /dev/null @@ -1,8 +0,0 @@ -/* This kludge works around a libpthread static linking problem: - https://sourceware.org/bugzilla/show_bug.cgi?id=15648. */ - -#ifndef SHARED -# define __lll_lock_wait_private weak_function __lll_lock_wait_private -#endif - -#include <lowlevellock.c> |