---
htl/Makefile | 5 +-
htl/Versions | 4 +-
htl/lockfile.c | 53 ---------------------
htl/pt-initialize.c | 3 --
include/stdio.h | 6 ++-
stdio-common/flockfile.c | 1 +
stdio-common/funlockfile.c | 1 +
sysdeps/htl/flockfile.c | 18 ++++---
sysdeps/htl/ftrylockfile.c | 17 ++++---
sysdeps/htl/funlockfile.c | 16 +++++--
sysdeps/htl/pthread-functions.h | 3 --
sysdeps/mach/hurd/i386/libc.abilist | 3 ++
sysdeps/mach/hurd/i386/libpthread.abilist | 6 ---
sysdeps/mach/hurd/x86_64/libpthread.abilist | 6 ---
14 files changed, 44 insertions(+), 98 deletions(-)
delete mode 100644 htl/lockfile.c
diff --git a/htl/Makefile b/htl/Makefile
index 15cff60d31..2f2ad0cccb 100644
--- a/htl/Makefile
+++ b/htl/Makefile
@@ -20,7 +20,7 @@ subdir := htl
srcdir = .
MICROKERNEL := mach
-SYSDEPS := lockfile
+SYSDEPS :=
LCLHDRS :=
@@ -36,7 +36,6 @@ libpthread-routines := \
pt-setname-np \
cancellation \
herrno \
- $(SYSDEPS) \
# libpthread-routine
headers := \
@@ -220,8 +219,6 @@ install-lib-ldscripts := libpthread_syms.a
include ../Makeconfig
-CFLAGS-lockfile.c = -D_IO_MTSAFE_IO
-
all: # Make this the default target; it will be defined in Rules.
subdir_install: $(inst_libdir)/libpthread2.a $(inst_libdir)/libpthread_syms.a
diff --git a/htl/Versions b/htl/Versions
index b56b185a10..2a83eb1b27 100644
--- a/htl/Versions
+++ b/htl/Versions
@@ -1,6 +1,7 @@
libc {
GLIBC_2.12 {
+ flockfile; ftrylockfile; funlockfile;
pthread_self;
__pthread_get_cleanup_stack;
__pthread_key_create;
@@ -313,12 +314,9 @@ libc {
libpthread {
GLIBC_2.2.6 {
- _IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
__errno_location; __h_errno_location;
}
GLIBC_2.12 {
- flockfile; ftrylockfile; funlockfile;
-
pthread_atfork;
pthread_create;
diff --git a/htl/lockfile.c b/htl/lockfile.c
deleted file mode 100644
index b76a59a17b..0000000000
--- a/htl/lockfile.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* lockfile - Handle locking and unlocking of streams. Hurd pthread version.
- Copyright (C) 2000-2025 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- 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/>. */
-
-#include <pthread.h> /* Must come before <stdio.h>! */
-#include <stdio.h>
-
-#undef _IO_flockfile
-#undef _IO_funlockfile
-#undef _IO_ftrylockfile
-
-void
-_IO_flockfile (FILE *fp)
-{
- _IO_lock_lock (*fp->_lock);
-}
-
-void
-_IO_funlockfile (FILE *fp)
-{
- _IO_lock_unlock (*fp->_lock);
-}
-
-int
-_IO_ftrylockfile (FILE *fp)
-{
- return __libc_lock_trylock_recursive (*fp->_lock);
-}
-
-#undef flockfile
-#undef funlockfile
-#undef ftrylockfile
-
-void flockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_flockfile")));
-void funlockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_funlockfile")));
-int ftrylockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_ftrylockfile")));
diff --git a/htl/pt-initialize.c b/htl/pt-initialize.c
index 86fe66fb3a..bc8bb1e501 100644
--- a/htl/pt-initialize.c
+++ b/htl/pt-initialize.c
@@ -28,9 +28,6 @@
#if IS_IN (libpthread)
static const struct pthread_functions pthread_functions = {
- .ptr__IO_flockfile = _IO_flockfile,
- .ptr__IO_funlockfile = _IO_funlockfile,
- .ptr__IO_ftrylockfile = _IO_ftrylockfile,
};
#endif /* IS_IN (libpthread) */
diff --git a/include/stdio.h b/include/stdio.h
index b892c5b4af..17bb5ffdb6 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -206,10 +206,12 @@ _Noreturn void __libc_message_wrapper (const char
*vmaname,
__libc_message_wrapper (__libc_assert_vma_name, __VA_ARGS__)
/* Acquire ownership of STREAM. */
-extern void __flockfile (FILE *__stream) attribute_hidden;
+extern void __flockfile (FILE *__stream);
+libc_hidden_proto (__flockfile)
/* Relinquish the ownership granted for STREAM. */
-extern void __funlockfile (FILE *__stream) attribute_hidden;
+extern void __funlockfile (FILE *__stream);
+libc_hidden_proto (__funlockfile)
/* Try to acquire ownership of STREAM but do not block if it is not
possible. */
diff --git a/stdio-common/flockfile.c b/stdio-common/flockfile.c
index f563390bbc..0c7b95d587 100644
--- a/stdio-common/flockfile.c
+++ b/stdio-common/flockfile.c
@@ -24,5 +24,6 @@ __flockfile (FILE *stream)
{
_IO_lock_lock (*stream->_lock);
}
+libc_hidden_def(__flockfile)
weak_alias (__flockfile, flockfile);
weak_alias (__flockfile, _IO_flockfile)
diff --git a/stdio-common/funlockfile.c b/stdio-common/funlockfile.c
index 443364edc7..23f2044d6b 100644
--- a/stdio-common/funlockfile.c
+++ b/stdio-common/funlockfile.c
@@ -25,5 +25,6 @@ __funlockfile (FILE *stream)
{
_IO_lock_unlock (*stream->_lock);
}
+libc_hidden_def(__funlockfile)
weak_alias (__funlockfile, _IO_funlockfile)
weak_alias (__funlockfile, funlockfile);
diff --git a/sysdeps/htl/flockfile.c b/sysdeps/htl/flockfile.c
index 0a9cc8874a..86c31f44be 100644
--- a/sysdeps/htl/flockfile.c
+++ b/sysdeps/htl/flockfile.c
@@ -17,15 +17,21 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-#include <libc-lockP.h>
+#include <stdio-lock.h>
void
__flockfile (FILE *stream)
{
-#ifdef SHARED
- __libc_ptf_call (_IO_flockfile, (stream), 0);
-#endif
+ _IO_lock_lock (*stream->_lock);
}
-weak_alias (__flockfile, _IO_flockfile)
-weak_alias (__flockfile, flockfile)
+libc_hidden_def(__flockfile)
+weak_alias (__flockfile, _IO_flockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __flockfile, flockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __flockfile, flockfile, GLIBC_2_12);
+# endif
+#else
+weak_alias (__flockfile, flockfile);
+#endif
diff --git a/sysdeps/htl/ftrylockfile.c b/sysdeps/htl/ftrylockfile.c
index b8acd30ea4..c0e30aa090 100644
--- a/sysdeps/htl/ftrylockfile.c
+++ b/sysdeps/htl/ftrylockfile.c
@@ -17,17 +17,20 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-#include <libc-lockP.h>
+#include <stdio-lock.h>
int
__ftrylockfile (FILE *stream)
{
-#ifdef SHARED
- return __libc_ptf_call (_IO_ftrylockfile, (stream), 0);
+ return _IO_lock_trylock (*stream->_lock);
+}
+weak_alias (__ftrylockfile, _IO_ftrylockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __ftrylockfile, ftrylockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __ftrylockfile, ftrylockfile, GLIBC_2_12);
+# endif
#else
- return 0;
+weak_alias (__ftrylockfile, ftrylockfile);
#endif
-}
-weak_alias (__ftrylockfile, _IO_ftrylockfile)
-weak_alias (__ftrylockfile, ftrylockfile)
diff --git a/sysdeps/htl/funlockfile.c b/sysdeps/htl/funlockfile.c
index c89d17ad27..20039b8482 100644
--- a/sysdeps/htl/funlockfile.c
+++ b/sysdeps/htl/funlockfile.c
@@ -23,9 +23,15 @@
void
__funlockfile (FILE *stream)
{
-#ifdef SHARED
- __libc_ptf_call (_IO_funlockfile, (stream), 0);
-#endif
+ _IO_lock_unlock (*stream->_lock);
}
-weak_alias (__funlockfile, _IO_funlockfile)
-weak_alias (__funlockfile, funlockfile)
+libc_hidden_def(__funlockfile)
+weak_alias (__funlockfile, _IO_funlockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __funlockfile, funlockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __funlockfile, funlockfile, GLIBC_2_12);
+# endif
+#else
+weak_alias (__funlockfile, funlockfile);
+#endif
diff --git a/sysdeps/htl/pthread-functions.h b/sysdeps/htl/pthread-functions.h
index 2b1feb4e04..4fab472e50 100644
--- a/sysdeps/htl/pthread-functions.h
+++ b/sysdeps/htl/pthread-functions.h
@@ -26,9 +26,6 @@
so if possible avoid breaking it and append new hooks to the end. */
struct pthread_functions
{
- void (*ptr__IO_flockfile) (FILE *);
- void (*ptr__IO_funlockfile) (FILE *);
- int (*ptr__IO_ftrylockfile) (FILE *);
};
/* Variable in libc.so. */
diff --git a/sysdeps/mach/hurd/i386/libc.abilist
b/sysdeps/mach/hurd/i386/libc.abilist
index e5bd47ac39..bbd00ed11a 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -33,6 +33,9 @@ GLIBC_2.12 __pthread_key_create F
GLIBC_2.12 __pthread_kill F
GLIBC_2.12 __pthread_mutex_transfer_np F
GLIBC_2.12 __pthread_self F
+GLIBC_2.12 flockfile F
+GLIBC_2.12 ftrylockfile F
+GLIBC_2.12 funlockfile F
GLIBC_2.12 pthread_attr_destroy F
GLIBC_2.12 pthread_attr_getdetachstate F
GLIBC_2.12 pthread_attr_getguardsize F
diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist
b/sysdeps/mach/hurd/i386/libpthread.abilist
index b9fd3dd489..b0516ddbc1 100644
--- a/sysdeps/mach/hurd/i386/libpthread.abilist
+++ b/sysdeps/mach/hurd/i386/libpthread.abilist
@@ -4,9 +4,6 @@ GLIBC_2.12 __pthread_spin_lock F
GLIBC_2.12 __pthread_spin_trylock F
GLIBC_2.12 __pthread_spin_unlock F
GLIBC_2.12 _pthread_spin_lock F
-GLIBC_2.12 flockfile F
-GLIBC_2.12 ftrylockfile F
-GLIBC_2.12 funlockfile F
GLIBC_2.12 pthread_atfork F
GLIBC_2.12 pthread_create F
GLIBC_2.12 pthread_spin_destroy F
@@ -14,9 +11,6 @@ GLIBC_2.12 pthread_spin_init F
GLIBC_2.12 pthread_spin_lock F
GLIBC_2.12 pthread_spin_trylock F
GLIBC_2.12 pthread_spin_unlock F
-GLIBC_2.2.6 _IO_flockfile F
-GLIBC_2.2.6 _IO_ftrylockfile F
-GLIBC_2.2.6 _IO_funlockfile F
GLIBC_2.2.6 __errno_location F
GLIBC_2.2.6 __h_errno_location F
GLIBC_2.21 pthread_hurd_cond_timedwait_np F
diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist
b/sysdeps/mach/hurd/x86_64/libpthread.abilist
index e72dca501b..5724c88a6b 100644
--- a/sysdeps/mach/hurd/x86_64/libpthread.abilist
+++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist
@@ -1,6 +1,3 @@
-GLIBC_2.38 _IO_flockfile F
-GLIBC_2.38 _IO_ftrylockfile F
-GLIBC_2.38 _IO_funlockfile F
GLIBC_2.38 __errno_location F
GLIBC_2.38 __h_errno_location F
GLIBC_2.38 __pthread_spin_destroy F
@@ -16,9 +13,6 @@ GLIBC_2.38 cnd_init F
GLIBC_2.38 cnd_signal F
GLIBC_2.38 cnd_timedwait F
GLIBC_2.38 cnd_wait F
-GLIBC_2.38 flockfile F
-GLIBC_2.38 ftrylockfile F
-GLIBC_2.38 funlockfile F
GLIBC_2.38 mtx_destroy F
GLIBC_2.38 mtx_init F
GLIBC_2.38 mtx_lock F
--
2.51.0