From: Florian Weimer Date: Mon, 22 Feb 2021 17:30:52 +0000 (+0100) Subject: nptl: Move lowlevellock into libc [BZ #15648] X-Git-Tag: glibc-2.34~917 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f4019de81024cc0d05a5b5cedb1afb28b59a836;p=thirdparty%2Fglibc.git 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. --- diff --git a/nptl/Makefile b/nptl/Makefile index 5a7558d9430..62f368af1ee 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 7254ca4750c..694747bb441 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 e840399c418..00000000000 --- 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 , 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 - . */ - -/* No difference to lowlevellock.c, except we lose a couple of functions. */ -#include diff --git a/nptl/lowlevellock.c b/nptl/lowlevellock.c index 1ea397d5cb1..7976c6d8f50 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 0a2b413f861..176ba962510 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 9523fb46a59..00000000000 --- 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