public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Siddhesh Poyarekar <siddhesh@gotplt.org>
To: Sergey Bugaev <bugaevc@gmail.com>, libc-alpha@sourceware.org
Cc: Hector Martin <marcan@marcan.st>
Subject: Re: [RFC PATCH 1/1] io: Add FORTIFY_SOURCE check for fcntl arguments
Date: Tue, 23 May 2023 15:15:45 -0400	[thread overview]
Message-ID: <be0c6485-b43a-256e-41f9-71181a0b17b1@gotplt.org> (raw)
In-Reply-To: <20230519213059.3812385-2-bugaevc@gmail.com>

On 2023-05-19 17:30, Sergey Bugaev via Libc-alpha wrote:
> Both open () and fcntl () are "overloaded" to accept either 2 or 3
> arguments; whether the last argument is required depends on the values
> of the previous arguments. Since C provides no native support for
> function overloading, this is implemented by making these functions
> vararg. Unfortunately, this means the compiler is unable to check the
> number of arguments and their types for correctness at compile time, and
> will not diagnose any mistakes.
> 
> To help with this, when FORTIFY_SOURCE is enabled, the special fcntl2.h
> header replaces open () with a wrapper that checks the passed number of
> arguments, raising a compile-time or run-time error on mismatch. This
> commit adds similar handling for fcntl ().
> 
> Recently, Hector Martin <marcan@marcan.st> has identified an issue in
> libwebrtc where fcntl (fd, F_DUPFD_CLOEXEC) was invoked without a third
> argument [0]. With the patch, the bug would have been detected at
> compile time, assuming libwebrtc is built with FORTIFY_SOURCE. Hopefully
> this will help detecting similar bugs in existing software, and prevent
> more instances of similar bugs from being introduced in the future.
> 
> [0]: https://social.treehouse.systems/@marcan/110355001391961285
> 
> The abilists have been modified with 'make update-abi-all'.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
>   include/fcntl.h                               |   3 +
>   io/Makefile                                   |   2 +-
>   io/Versions                                   |   4 +
>   io/bits/fcntl2.h                              | 139 ++++++++++++++++++
>   io/fcntl64_2.c                                |  33 +++++
>   io/fcntl_2.c                                  |  33 +++++
>   sysdeps/mach/hurd/i386/libc.abilist           |   2 +
>   sysdeps/mach/hurd/x86_64/libc.abilist         |   2 +
>   sysdeps/unix/sysv/linux/aarch64/libc.abilist  |   2 +
>   sysdeps/unix/sysv/linux/alpha/libc.abilist    |   2 +
>   sysdeps/unix/sysv/linux/arc/libc.abilist      |   2 +
>   sysdeps/unix/sysv/linux/arm/be/libc.abilist   |   2 +
>   sysdeps/unix/sysv/linux/arm/le/libc.abilist   |   2 +
>   sysdeps/unix/sysv/linux/csky/libc.abilist     |   2 +
>   sysdeps/unix/sysv/linux/hppa/libc.abilist     |   2 +
>   sysdeps/unix/sysv/linux/i386/libc.abilist     |   2 +
>   sysdeps/unix/sysv/linux/ia64/libc.abilist     |   2 +
>   .../sysv/linux/loongarch/lp64/libc.abilist    |   2 +
>   .../sysv/linux/m68k/coldfire/libc.abilist     |   2 +
>   .../unix/sysv/linux/m68k/m680x0/libc.abilist  |   2 +
>   .../sysv/linux/microblaze/be/libc.abilist     |   2 +
>   .../sysv/linux/microblaze/le/libc.abilist     |   2 +
>   .../sysv/linux/mips/mips32/fpu/libc.abilist   |   2 +
>   .../sysv/linux/mips/mips32/nofpu/libc.abilist |   2 +
>   .../sysv/linux/mips/mips64/n32/libc.abilist   |   2 +
>   .../sysv/linux/mips/mips64/n64/libc.abilist   |   2 +
>   sysdeps/unix/sysv/linux/nios2/libc.abilist    |   2 +
>   sysdeps/unix/sysv/linux/or1k/libc.abilist     |   2 +
>   .../linux/powerpc/powerpc32/fpu/libc.abilist  |   2 +
>   .../powerpc/powerpc32/nofpu/libc.abilist      |   2 +
>   .../linux/powerpc/powerpc64/be/libc.abilist   |   2 +
>   .../linux/powerpc/powerpc64/le/libc.abilist   |   2 +
>   .../unix/sysv/linux/riscv/rv32/libc.abilist   |   2 +
>   .../unix/sysv/linux/riscv/rv64/libc.abilist   |   2 +
>   .../unix/sysv/linux/s390/s390-32/libc.abilist |   2 +
>   .../unix/sysv/linux/s390/s390-64/libc.abilist |   2 +
>   sysdeps/unix/sysv/linux/sh/be/libc.abilist    |   2 +
>   sysdeps/unix/sysv/linux/sh/le/libc.abilist    |   2 +
>   .../sysv/linux/sparc/sparc32/libc.abilist     |   2 +
>   .../sysv/linux/sparc/sparc64/libc.abilist     |   2 +
>   .../unix/sysv/linux/x86_64/64/libc.abilist    |   2 +
>   .../unix/sysv/linux/x86_64/x32/libc.abilist   |   2 +
>   42 files changed, 285 insertions(+), 1 deletion(-)
>   create mode 100644 io/fcntl64_2.c
>   create mode 100644 io/fcntl_2.c
> 
> diff --git a/include/fcntl.h b/include/fcntl.h
> index d788db2e..7742c002 100644
> --- a/include/fcntl.h
> +++ b/include/fcntl.h
> @@ -32,6 +32,9 @@ extern int __open64_2 (const char *__path, int __oflag);
>   extern int __openat_2 (int __fd, const char *__path, int __oflag);
>   extern int __openat64_2 (int __fd, const char *__path, int __oflag);
>   
> +extern int __fcntl_2 (int __fd, int __cmd);
> +extern int __fcntl64_2 (int __fd, int __cmd);
> +

With my Bikeshed Aesthetics Consultant hat on, the naming of fortified 
variants of file ops functions as *_2 is awkward, they should have been 
*_chk but I don't want to block this good work on that.  The overall 
direction is good IMO (and I see Adhemerval is on it with a deeper 
review), just some notes:

- manual/contrib.texi should be updated to mention fcntl

- Internal users end up calling __libc_fcntl (see dup2.c or grantpt.c 
for example), which will essentially bypass any fortification.  This is 
not a problem today since we don't build glibc with fortification, but 
Frederic Berat[1] has been experimenting with that and we're hoping to 
get at least a subset of glibc fortified for 2.38.  It would be a shame 
to miss fortifying glibc itself.  This is again not a problem that would 
block this patch, but something to be aware of.

>   
>   /* Makes open () & friends faster on the Hurd, but can only be used (without
>      altering user-visible behavior) when we're sure that the file we're opening
> diff --git a/io/Makefile b/io/Makefile
> index f72571cd..350807ee 100644
> --- a/io/Makefile
> +++ b/io/Makefile
> @@ -41,7 +41,7 @@ routines :=								\
>   	mkdir mkdirat							\
>   	open open_2 open64 open64_2 openat openat_2 openat64 openat64_2	\
>   	read write lseek lseek64 access euidaccess faccessat		\
> -	fcntl fcntl64 flock lockf lockf64				\
> +	fcntl fcntl_2 fcntl64 fcntl64_2 flock lockf lockf64		\
>   	close dup dup2 dup3 pipe pipe2					\
>   	creat creat64							\
>   	chdir fchdir							\
> diff --git a/io/Versions b/io/Versions
> index 4e195408..8409e105 100644
> --- a/io/Versions
> +++ b/io/Versions
> @@ -140,6 +140,10 @@ libc {
>     GLIBC_2.34 {
>       closefrom;
>     }
> +  GLIBC_2.38 {
> +    __fcntl_2;
> +    __fcntl64_2;
> +  }
>     GLIBC_PRIVATE {
>       __libc_fcntl64;
>       __fcntl_nocancel;
> diff --git a/io/bits/fcntl2.h b/io/bits/fcntl2.h
> index bdb48fa8..beb3a628 100644
> --- a/io/bits/fcntl2.h
> +++ b/io/bits/fcntl2.h
> @@ -170,3 +170,142 @@ openat64 (int __fd, const char *__path, int __oflag, ...)
>   }
>   # endif
>   #endif
> +
> +#ifndef __USE_TIME_BITS64
> +
> +# ifndef __USE_FILE_OFFSET64
> +/* Just fcntl ().  */
> +extern int __fcntl_2 (int __fd, int __cmd);
> +extern int __REDIRECT (__fcntl_alias, (int __fd, int __cmd, ...), fcntl);
> +# else
> +/* fcntl.h redirects fcntl () to fcntl64 ().  */
> +extern int __REDIRECT (__fcntl_2, (int __fd, int __cmd), __fcntl64_2);
> +extern int __REDIRECT (__fcntl_alias, (int __fd, int __cmd, ...), fcntl64);
> +# endif /* __USE_FILE_OFFSET64 */
> +
> +# ifdef __USE_LARGEFILE64
> +/* Just fcntl64 ().  */
> +extern int __fcntl64_2 (int __fd, int __cmd);
> +extern int __REDIRECT (__fcntl64_alias, (int __fd, int __cmd, ...), fcntl64);
> +# endif
> +
> +#else /* __USE_TIME_BITS64 */
> +
> +/* fcntl.h redirects both fcntl () and fcntl64 () to __fcntl_time64 ().  */
> +extern int __fcntl64_2 (int __fd, int __cmd);
> +extern int __REDIRECT (__fcntl_2, (int __fd, int __cmd), __fcntl64_2);
> +extern int __REDIRECT_NTH (__fcntl_alias, (int __fd, int __cmd, ...),
> +			   __fcntl_time64);
> +extern int __REDIRECT_NTH (__fcntl64_alias, (int __fd, int __cmd, ...),
> +			   __fcntl_time64);
> +#endif /* __USE_TIME_BITS64 */
> +
> +__errordecl (__fcntl_too_many_args,
> +             "fcntl can be called either with 2 or 3 arguments, not more");
> +__errordecl (__fcntl_missing_arg,
> +             "fcntl with with this cmd needs 3 arguments");
> +
> +__extern_always_inline int
> +__fcntl_cmd_needs_arg (int __cmd)
> +{
> +  switch (__cmd)
> +    {
> +    case F_DUPFD:
> +    case F_DUPFD_CLOEXEC:
> +    case F_SETFD:
> +    case F_SETFL:
> +#ifdef F_SETLK
> +    case F_SETLK:
> +    case F_SETLKW:
> +    case F_GETLK:
> +#endif
> +#ifdef F_OFD_SETLK
> +    case F_OFD_SETLK:
> +    case F_OFD_SETLKW:
> +    case F_OFD_GETLK:
> +#endif
> +#ifdef F_SETOWN
> +    case F_SETOWN:
> +#endif
> +#ifdef __F_GETOWN_EX
> +    case __F_GETOWN_EX:
> +    case __F_SETOWN_EX:
> +    case __F_SETSIG:
> +#endif
> +#ifdef F_SETLEASE
> +    case F_SETLEASE:
> +    case F_NOTIFY:
> +    case F_SETPIPE_SZ:
> +    case F_ADD_SEALS:
> +    case F_GET_RW_HINT:
> +    case F_SET_RW_HINT:
> +    case F_GET_FILE_RW_HINT:
> +    case F_SET_FILE_RW_HINT:
> +#endif
> +      return 1;
> +
> +    case F_GETFD:
> +    case F_GETFL:
> +#ifdef F_GETOWN
> +    case F_GETOWN:
> +#endif
> +#ifdef __F_GETSIG
> +    case __F_GETSIG:
> +#endif
> +#ifdef F_GETLEASE
> +    case F_GETLEASE:
> +    case F_GETPIPE_SZ:
> +    case F_GET_SEALS:
> +#endif
> +    /* For any cmd value we don't know about,
> +       default to not requiring an argument.  */
> +    default:
> +      return 0;
> +    }
> +}
> +
> +__fortify_function int
> +fcntl (int __fd, int __cmd, ...)
> +{
> +  if (__va_arg_pack_len () > 1)
> +    __fcntl_too_many_args ();
> +
> +  if (__builtin_constant_p (__cmd))
> +    {
> +      if (__fcntl_cmd_needs_arg (__cmd) && __va_arg_pack_len () < 1)
> +        {
> +          __fcntl_missing_arg ();
> +          return __fcntl_2 (__fd, __cmd);
> +        }
> +      return __fcntl_alias (__fd, __cmd, __va_arg_pack ());
> +    }
> +
> +  if (__va_arg_pack_len () < 1)
> +    return __fcntl_2 (__fd, __cmd);
> +
> +  return __fcntl_alias (__fd, __cmd, __va_arg_pack ());
> +}
> +
> +#ifdef __USE_LARGEFILE64
> +__fortify_function int
> +fcntl64 (int __fd, int __cmd, ...)
> +{
> +  if (__va_arg_pack_len () > 1)
> +    __fcntl_too_many_args ();
> +
> +  if (__builtin_constant_p (__cmd))
> +    {
> +      if (__fcntl_cmd_needs_arg (__cmd) && __va_arg_pack_len () < 1)
> +        {
> +          __fcntl_missing_arg ();

Given that this will error out at compile time, do we even need this 
__fcntl64_2 call?

> +          return __fcntl64_2 (__fd, __cmd);
> +        }
> +      return __fcntl64_alias (__fd, __cmd, __va_arg_pack ());
> +    }
> +
> +  if (__va_arg_pack_len () < 1)
> +    return __fcntl64_2 (__fd, __cmd);
> +
> +  return __fcntl64_alias (__fd, __cmd, __va_arg_pack ());
> +}
> +#endif
> diff --git a/io/fcntl64_2.c b/io/fcntl64_2.c
> new file mode 100644
> index 00000000..6352f524
> --- /dev/null
> +++ b/io/fcntl64_2.c
> @@ -0,0 +1,33 @@
> +/* _FORTIFY_SOURCE wrapper for fcntl64.
> +   Copyright (C) 2013-2023 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/>.  */
> +
> +/* Make sure to get __fcntl_cmd_needs_arg from bits/fcntl2.h */
> +#undef _FORTIFY_SOURCE
> +#define _FORTIFY_SOURCE 1
> +
> +#include <fcntl.h>
> +#include <stdio.h>
> +
> +int
> +__fcntl64_2 (int fd, int cmd)
> +{
> +  if (__fcntl_cmd_needs_arg (cmd))
> +    __fortify_fail ("invalid fcntl64 call: this cmd requires an argument");
> +
> +  return __libc_fcntl64 (fd, cmd);
> +}
> diff --git a/io/fcntl_2.c b/io/fcntl_2.c
> new file mode 100644
> index 00000000..fc9303e4
> --- /dev/null
> +++ b/io/fcntl_2.c
> @@ -0,0 +1,33 @@
> +/* _FORTIFY_SOURCE wrapper for fcntl.
> +   Copyright (C) 2013-2023 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/>.  */
> +
> +/* Make sure to get __fcntl_cmd_needs_arg from bits/fcntl2.h */
> +#undef _FORTIFY_SOURCE
> +#define _FORTIFY_SOURCE 1
> +
> +#include <fcntl.h>
> +#include <stdio.h>
> +
> +int
> +__fcntl_2 (int fd, int cmd)
> +{
> +  if (__fcntl_cmd_needs_arg (cmd))
> +    __fortify_fail ("invalid fcntl call: this cmd requires an argument");
> +
> +  return __libc_fcntl (fd, cmd);
> +}
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index 6925222f..fa24d577 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2294,6 +2294,8 @@ GLIBC_2.36 arc4random_buf F
>   GLIBC_2.36 arc4random_uniform F
>   GLIBC_2.36 c8rtomb F
>   GLIBC_2.36 mbrtoc8 F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
> index a0be5c1a..efb83b16 100644
> --- a/sysdeps/mach/hurd/x86_64/libc.abilist
> +++ b/sysdeps/mach/hurd/x86_64/libc.abilist
> @@ -194,6 +194,8 @@ GLIBC_2.38 __errno_location F
>   GLIBC_2.38 __explicit_bzero_chk F
>   GLIBC_2.38 __fbufsize F
>   GLIBC_2.38 __fcntl F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __fdelt_chk F
>   GLIBC_2.38 __fdelt_warn F
>   GLIBC_2.38 __fentry__ F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index 0e2d9c30..86144979 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2633,6 +2633,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index f1bec197..646c11e3 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -2730,6 +2730,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index aa874b88..37e9129f 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -2394,6 +2394,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index afbd57da..4c9b937e 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -514,6 +514,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index e7364cd3..8dbf72c5 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -511,6 +511,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index 913fa592..b58b2b9c 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2670,6 +2670,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 43af3a98..c80bb835 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2619,6 +2619,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index af72f8fa..5a737b3d 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -2803,6 +2803,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> index 48cbb0fa..aab6d422 100644
> --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
> @@ -2568,6 +2568,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> index c15884bb..82da98d2 100644
> --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> @@ -2154,6 +2154,8 @@ GLIBC_2.36 wprintf F
>   GLIBC_2.36 write F
>   GLIBC_2.36 writev F
>   GLIBC_2.36 wscanf F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 3738db81..f6c80b46 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -515,6 +515,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index ed136277..dc34ea56 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2746,6 +2746,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index 83577386..466e4092 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2719,6 +2719,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 58c5da58..dc27b4e7 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2716,6 +2716,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index d3741945..a8dfa647 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2711,6 +2711,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 5319fdc2..4defd8dc 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2709,6 +2709,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index 1743ea6e..824b6b4c 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2717,6 +2717,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index 9b1f53c6..ff4341a8 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2619,6 +2619,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> index ae1c6ca1..ede0e6eb 100644
> --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
> @@ -2758,6 +2758,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> index a7c572c9..22525fe8 100644
> --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> @@ -2140,6 +2140,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 074fa031..2938361e 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -2773,6 +2773,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index dfcb4bd2..e1c70a25 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -2806,6 +2806,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 63bbccf3..2ce2d974 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2527,6 +2527,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index ab85fd61..b1024501 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2829,6 +2829,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fscanfieee128 F
>   GLIBC_2.38 __isoc23_fwscanf F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index b716f5c7..833fb747 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -2396,6 +2396,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index 774e777b..cbd85454 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2596,6 +2596,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 8625135c..1442a0b9 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -2771,6 +2771,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index d00c7eb2..1a7f4fc7 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2564,6 +2564,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index b6303724..3146ce99 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2626,6 +2626,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index d8005561..31360691 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2623,6 +2623,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index 5be55c11..026e9581 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -2766,6 +2766,8 @@ GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
>   GLIBC_2.37 __ppoll64_chk F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index 475fdaae..6ecb0d46 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2591,6 +2591,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 6cfb928b..a37f4ab4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2542,6 +2542,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index c7350971..3b8790f4 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2648,6 +2648,8 @@ GLIBC_2.36 pidfd_open F
>   GLIBC_2.36 pidfd_send_signal F
>   GLIBC_2.36 process_madvise F
>   GLIBC_2.36 process_mrelease F
> +GLIBC_2.38 __fcntl64_2 F
> +GLIBC_2.38 __fcntl_2 F
>   GLIBC_2.38 __isoc23_fscanf F
>   GLIBC_2.38 __isoc23_fwscanf F
>   GLIBC_2.38 __isoc23_scanf F

[1] https://patchwork.sourceware.org/project/glibc/list/?series=19418

  parent reply	other threads:[~2023-05-23 19:15 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-19 21:30 [RFC PATCH 0/1] Attempt to detect missing fcntl argument at compile time Sergey Bugaev
2023-05-19 21:30 ` [RFC PATCH 1/1] io: Add FORTIFY_SOURCE check for fcntl arguments Sergey Bugaev
2023-05-19 21:55   ` Joseph Myers
2023-05-20 11:46     ` Sergey Bugaev
2023-05-20 18:21       ` [RFC PATCH] debug: Add tests for fortified fcntl () Sergey Bugaev
2023-05-23 18:40         ` Adhemerval Zanella Netto
2023-05-23 19:19           ` Sergey Bugaev
2023-05-23 19:48             ` Adhemerval Zanella Netto
2023-05-24  7:15               ` Sergey Bugaev
2023-05-24 12:15                 ` Adhemerval Zanella Netto
2023-05-23 19:09   ` [RFC PATCH 1/1] io: Add FORTIFY_SOURCE check for fcntl arguments Adhemerval Zanella Netto
2023-05-23 19:43     ` Sergey Bugaev
2023-05-23 19:56       ` Adhemerval Zanella Netto
2023-05-23 20:24         ` Sergey Bugaev
2023-05-23 20:44           ` Sergey Bugaev
2023-05-24 12:04           ` Adhemerval Zanella Netto
2023-05-23 19:15   ` Siddhesh Poyarekar [this message]
2023-05-23 20:01     ` Sergey Bugaev
2023-05-23 20:06       ` Sergey Bugaev
2023-05-23 21:46   ` Florian Weimer
2023-05-24  7:31     ` Sergey Bugaev
2023-05-24  8:29       ` Florian Weimer
2023-05-24 10:51         ` Sergey Bugaev
2023-05-24 11:18           ` Florian Weimer
2023-05-24 11:46             ` Siddhesh Poyarekar
2023-05-24 12:12               ` Andreas Schwab
2023-05-24 12:18                 ` Florian Weimer
2023-05-24 12:37                   ` Sergey Bugaev
2023-05-24 12:45                     ` Florian Weimer
2023-05-24 13:02                       ` Sergey Bugaev
2023-05-24 13:18                         ` Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=be0c6485-b43a-256e-41f9-71181a0b17b1@gotplt.org \
    --to=siddhesh@gotplt.org \
    --cc=bugaevc@gmail.com \
    --cc=libc-alpha@sourceware.org \
    --cc=marcan@marcan.st \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).