aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/mach/hurd/i386/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arc/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/closefrom.c35
-rw-r--r--sysdeps/unix/sysv/linux/closefrom_fallback.c97
-rw-r--r--sysdeps/unix/sysv/linux/csky/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist1
36 files changed, 167 insertions, 1 deletions
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index fcfe64f..475bf2d 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2225,6 +2225,7 @@ GLIBC_2.34 _Fork F
GLIBC_2.34 __isnanf128 F
GLIBC_2.34 __libc_start_main F
GLIBC_2.34 _hurd_libc_proc_init F
+GLIBC_2.34 closefrom F
GLIBC_2.34 dladdr F
GLIBC_2.34 dladdr1 F
GLIBC_2.34 dlclose F
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index e308711..d45a16a 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -64,7 +64,8 @@ sysdep_routines += adjtimex clone umount umount2 readahead sysctl \
pselect32 \
xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
fxstatat fxstatat64 \
- xmknod xmknodat convert_scm_timestamps
+ xmknod xmknodat convert_scm_timestamps \
+ closefrom_fallback
CFLAGS-gethostid.c = -fexceptions
CFLAGS-tee.c = -fexceptions -fasynchronous-unwind-tables
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 428b23f..5d5dc5a 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2408,6 +2408,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index d5c24d0..5f863c7 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2507,6 +2507,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 6213e42..e9349e5 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2167,6 +2167,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 37c395e..cdfa582 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -301,6 +301,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index dd850ce..83bf346 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -298,6 +298,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/closefrom.c b/sysdeps/unix/sysv/linux/closefrom.c
new file mode 100644
index 0000000..f5d7342
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/closefrom.c
@@ -0,0 +1,35 @@
+/* Close a range of file descriptors. Linux version.
+ Copyright (C) 2021 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 <stdio.h>
+#include <sys/param.h>
+#include <unistd.h>
+
+void
+__closefrom (int lowfd)
+{
+ int l = MAX (0, lowfd);
+
+ int r = __close_range (l, ~0U, 0);
+ if (r == 0)
+ return;
+
+ if (!__closefrom_fallback (l))
+ __fortify_fail ("closefrom failed to close a file descriptor");
+}
+weak_alias (__closefrom, closefrom)
diff --git a/sysdeps/unix/sysv/linux/closefrom_fallback.c b/sysdeps/unix/sysv/linux/closefrom_fallback.c
new file mode 100644
index 0000000..61e71d3
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/closefrom_fallback.c
@@ -0,0 +1,97 @@
+/* Close a range of file descriptors. Linux version.
+ Copyright (C) 2021 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 <arch-fd_to_filename.h>
+#include <dirent.h>
+#include <not-cancel.h>
+#include <stdbool.h>
+
+/* Fallback code: iterates over /proc/self/fd, closing each file descriptor
+ that fall on the criteria. */
+_Bool
+__closefrom_fallback (int from)
+{
+ bool ret = false;
+
+ int dirfd = __open_nocancel (FD_TO_FILENAME_PREFIX, O_RDONLY | O_DIRECTORY,
+ 0);
+ if (dirfd == -1)
+ {
+ /* The closefrom should work even when process can't open new files. */
+ if (errno == ENOENT)
+ goto err;
+
+ for (int i = from; i < INT_MAX; i++)
+ {
+ int r = __close_nocancel (i);
+ if (r == 0 || (r == -1 && errno != EBADF))
+ break;
+ }
+
+ dirfd = __open_nocancel (FD_TO_FILENAME_PREFIX, O_RDONLY | O_DIRECTORY,
+ 0);
+ if (dirfd == -1)
+ goto err;
+ }
+
+ char buffer[1024];
+ while (true)
+ {
+ ssize_t ret = __getdents64 (dirfd, buffer, sizeof (buffer));
+ if (ret == -1)
+ goto err;
+ else if (ret == 0)
+ break;
+
+ /* If any file descriptor is closed it resets the /proc/self position
+ read again from the start (to obtain any possible kernel update). */
+ bool closed = false;
+ char *begin = buffer, *end = buffer + ret;
+ while (begin != end)
+ {
+ unsigned short int d_reclen;
+ memcpy (&d_reclen, begin + offsetof (struct dirent64, d_reclen),
+ sizeof (d_reclen));
+ const char *dname = begin + offsetof (struct dirent64, d_name);
+ begin += d_reclen;
+
+ if (dname[0] == '.')
+ continue;
+
+ int fd = 0;
+ for (const char *s = dname; (unsigned int) (*s) - '0' < 10; s++)
+ fd = 10 * fd + (*s - '0');
+
+ if (fd == dirfd || fd < from)
+ continue;
+
+ /* We ignore close errors because EBADF, EINTR, and EIO means the
+ descriptor has been released. */
+ __close_nocancel (fd);
+ closed = true;
+ }
+
+ if (closed && __lseek (dirfd, 0, SEEK_SET) < 0)
+ goto err;
+ }
+
+ ret = true;
+err:
+ __close_nocancel (dirfd);
+ return ret;
+}
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 48dc96e..705b696 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2433,6 +2433,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 13772d4..db77e47 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2386,6 +2386,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 6613f4c..126c8f6 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2570,6 +2570,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 06d096d..6ca9645 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2345,6 +2345,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index dc2466f..0a5d6de 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -302,6 +302,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index d425dba..11e4f01 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2513,6 +2513,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index f1fc795..6efe53a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2484,6 +2484,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 7cf1c86..3b1a49c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2481,6 +2481,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 41b7927..6256381 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2478,6 +2478,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 91f06d23..c812e5c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2476,6 +2476,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index a4d3e06..43296b2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2484,6 +2484,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 3e96b69..12652d6 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2396,6 +2396,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index 3618eaa..676dce5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2523,6 +2523,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 3951054..959418a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2540,6 +2540,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 4c2adbd..405b9b9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2573,6 +2573,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index e9d30b1..e60fe89 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2309,6 +2309,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 81c1eac..0f86da7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2604,6 +2604,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 6fa30b2..e1f3be2 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2169,6 +2169,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 7c20b71..bf6b44d 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2369,6 +2369,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index fe0c9a2..1437ff7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2538,6 +2538,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index da52d75..68e49fa 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2346,6 +2346,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 6f022d1..9ec571d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2393,6 +2393,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index a4934d8..f1114f1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2390,6 +2390,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 684e9d7..e63a58e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2533,6 +2533,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index af10195..25f1526 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2368,6 +2368,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index b5e2710..88a5b0b 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2324,6 +2324,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index ecd0b4e..ff219a8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2423,6 +2423,7 @@ GLIBC_2.34 aio_write F
GLIBC_2.34 aio_write64 F
GLIBC_2.34 call_once F
GLIBC_2.34 close_range F
+GLIBC_2.34 closefrom F
GLIBC_2.34 cnd_broadcast F
GLIBC_2.34 cnd_destroy F
GLIBC_2.34 cnd_init F