about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Makefile88
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions14
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fscanf.c36
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fwscanf.c36
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_scanf.c36
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_sscanf.c41
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c41
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfscanf.c30
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfwscanf.c28
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vscanf.c28
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vsscanf.c32
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c33
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vwscanf.c28
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_wscanf.c36
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu89.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu89.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu89.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu89.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile44
-rw-r--r--sysdeps/ieee754/ldbl-opt/Versions14
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-compat.c170
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-compat.h12
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fscanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fwscanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_scanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_sscanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_swscanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfwscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vsscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vswscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vwscanf.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-isoc23_wscanf.c15
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu89.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c11.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c2x.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu11.c2
-rw-r--r--sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu89.c2
-rw-r--r--sysdeps/mach/hurd/i386/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/arc/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/csky/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist36
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist12
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist12
89 files changed, 1459 insertions, 2 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
index 67d476383a..d4ec41bf99 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
@@ -24,7 +24,13 @@ ldbl-extra-routines += isoc99_fwscanf \
 		       isoc99_wscanf \
 		       isoc99_vfwscanf \
 		       isoc99_vswscanf \
-		       isoc99_vwscanf
+		       isoc99_vwscanf \
+		       isoc23_fwscanf \
+		       isoc23_swscanf \
+		       isoc23_wscanf \
+		       isoc23_vfwscanf \
+		       isoc23_vswscanf \
+		       isoc23_vwscanf
 
 tests-internal += test-wcstold-ibm128 test-wcstold-ieee128
 CFLAGS-test-wcstold-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
@@ -53,7 +59,13 @@ ldbl-extra-routines += printf_size \
 		       isoc99_sscanf \
 		       isoc99_vfscanf \
 		       isoc99_vscanf \
-		       isoc99_vsscanf
+		       isoc99_vsscanf \
+		       isoc23_fscanf \
+		       isoc23_scanf \
+		       isoc23_sscanf \
+		       isoc23_vfscanf \
+		       isoc23_vscanf \
+		       isoc23_vsscanf
 
 # Printing long double values with IEEE binary128 format reuses part
 # of the internal float128 implementation (__printf_fp, __printf_fphex,
@@ -306,6 +318,78 @@ CFLAGS-test-ldouble-compat_totalorder.c += -mabi=ibmlongdouble
 CFLAGS-test-ldouble-compat_totalordermag.c += -mabi=ibmlongdouble
 endif
 
+ifeq ($(subdir), stdio-common)
+tests += tst-ibm128-scanf-binary-c11 \
+	 tst-ibm128-scanf-binary-c2x \
+	 tst-ibm128-scanf-binary-gnu11 \
+	 tst-ibm128-scanf-binary-gnu89 \
+	 tst-ieee128-scanf-binary-c11 \
+	 tst-ieee128-scanf-binary-c2x \
+	 tst-ieee128-scanf-binary-gnu11 \
+	 tst-ieee128-scanf-binary-gnu89
+
+# Some versions of GCC supported for building glibc do not support -std=c2x, so
+# the test for that version uses -std=c11 and then _ISOC2X_SOURCE is defined in
+# the test as needed.
+CFLAGS-tst-ibm128-scanf-binary-c11.c += -mabi=ibmlongdouble -Wno-psabi \
+					-std=c11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-scanf-binary-c2x.c += -mabi=ibmlongdouble -Wno-psabi \
+					-std=c11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-scanf-binary-gnu11.c += -mabi=ibmlongdouble -Wno-psabi \
+					  -std=gnu11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-scanf-binary-gnu89.c += -mabi=ibmlongdouble -Wno-psabi \
+					  -std=gnu89 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-scanf-binary-c11.c += -mfloat128 -mabi=ieeelongdouble \
+					 -Wno-psabi -std=c11 \
+					 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-scanf-binary-c2x.c += -mfloat128 -mabi=ieeelongdouble \
+					 -Wno-psabi -std=c11 \
+					 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-scanf-binary-gnu11.c += -mfloat128 -mabi=ieeelongdouble \
+					   -Wno-psabi -std=gnu11 \
+					   -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-scanf-binary-gnu89.c += -mfloat128 -mabi=ieeelongdouble \
+					   -Wno-psabi -std=gnu89 \
+					   -DOBJPFX=\"$(objpfx)\"
+
+endif
+
+ifeq ($(subdir), wcsmbs)
+tests += tst-ibm128-wscanf-binary-c11 \
+	 tst-ibm128-wscanf-binary-c2x \
+	 tst-ibm128-wscanf-binary-gnu11 \
+	 tst-ibm128-wscanf-binary-gnu89 \
+	 tst-ieee128-wscanf-binary-c11 \
+	 tst-ieee128-wscanf-binary-c2x \
+	 tst-ieee128-wscanf-binary-gnu11 \
+	 tst-ieee128-wscanf-binary-gnu89
+
+# Some versions of GCC supported for building glibc do not support -std=c2x, so
+# the test for that version uses -std=c11 and then _ISOC2X_SOURCE is defined in
+# the test as needed.
+CFLAGS-tst-ibm128-wscanf-binary-c11.c += -mabi=ibmlongdouble -Wno-psabi \
+					 -std=c11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-wscanf-binary-c2x.c += -mabi=ibmlongdouble -Wno-psabi \
+					 -std=c11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-wscanf-binary-gnu11.c += -mabi=ibmlongdouble -Wno-psabi \
+					   -std=gnu11 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ibm128-wscanf-binary-gnu89.c += -mabi=ibmlongdouble -Wno-psabi \
+					   -std=gnu89 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-wscanf-binary-c11.c += -mfloat128 -mabi=ieeelongdouble \
+					  -Wno-psabi -std=c11 \
+					  -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-wscanf-binary-c2x.c += -mfloat128 -mabi=ieeelongdouble \
+					  -Wno-psabi -std=c11 \
+					  -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-wscanf-binary-gnu11.c += -mfloat128 -mabi=ieeelongdouble \
+					    -Wno-psabi -std=gnu11 \
+					    -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-ieee128-wscanf-binary-gnu89.c += -mfloat128 -mabi=ieeelongdouble \
+					    -Wno-psabi -std=gnu89 \
+					    -DOBJPFX=\"$(objpfx)\"
+
+endif
+
 # Add IEEE binary128 files as make targets.
 routines += $(foreach r,$(ldbl-extra-routines),ieee128-$(r))
 
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index d4ffd3762b..c0679a1153 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -258,4 +258,18 @@ libc {
     __qecvtieee128_r;
     __qfcvtieee128_r;
   }
+  GLIBC_2.38 {
+    __isoc23_fscanfieee128;
+    __isoc23_scanfieee128;
+    __isoc23_sscanfieee128;
+    __isoc23_vfscanfieee128;
+    __isoc23_vscanfieee128;
+    __isoc23_vsscanfieee128;
+    __isoc23_fwscanfieee128;
+    __isoc23_swscanfieee128;
+    __isoc23_wscanfieee128;
+    __isoc23_vfwscanfieee128;
+    __isoc23_vswscanfieee128;
+    __isoc23_vwscanfieee128;
+  }
 }
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fscanf.c
new file mode 100644
index 0000000000..6d651a5d3f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fscanf.c
@@ -0,0 +1,36 @@
+/* Wrapper for __isoc23_fscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc23_fscanf (FILE *fp, const char *format, ...)
+{
+  va_list arg;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  va_start (arg, format);
+  done = __vfscanf_internal (fp, format, arg, mode_flags);
+  va_end (arg);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_fscanf, __isoc23_fscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fwscanf.c
new file mode 100644
index 0000000000..f9ba69ba50
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_fwscanf.c
@@ -0,0 +1,36 @@
+/* Wrapper for __isoc23_fwscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_fwscanf (FILE *fp, const wchar_t *format, ...)
+{
+  va_list ap;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  va_start (ap, format);
+  done = __vfwscanf_internal (fp, format, ap, mode_flags);
+  va_end (ap);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_fwscanf, __isoc23_fwscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_scanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_scanf.c
new file mode 100644
index 0000000000..4a128392b8
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_scanf.c
@@ -0,0 +1,36 @@
+/* Wrapper for __isoc23_scanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc23_scanf (const char *format, ...)
+{
+  va_list arg;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  va_start (arg, format);
+  done = __vfscanf_internal (stdin, format, arg, mode_flags);
+  va_end (arg);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_scanf, __isoc23_scanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_sscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_sscanf.c
new file mode 100644
index 0000000000..9845e6a282
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_sscanf.c
@@ -0,0 +1,41 @@
+/* Wrapper for __isoc23_sscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_sscanf (const char *string, const char *format, ...)
+{
+  va_list arg;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  _IO_strfile sf;
+  FILE *fp = _IO_strfile_read (&sf, string);
+
+  va_start (arg, format);
+  done = __vfscanf_internal (fp, format, arg, mode_flags);
+  va_end (arg);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_sscanf, __isoc23_sscanfieee128)
+hidden_def (___ieee128_isoc23_sscanf)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c
new file mode 100644
index 0000000000..b50a2bfbca
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_swscanf.c
@@ -0,0 +1,41 @@
+/* Wrapper for __isoc23_swscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_swscanf (const wchar_t *string, const wchar_t *format, ...)
+{
+  va_list ap;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  _IO_strfile sf;
+  struct _IO_wide_data wd;
+  FILE *fp = _IO_strfile_readw (&sf, &wd, string);
+
+  va_start (ap, format);
+  done = __vfwscanf_internal (fp, format, ap, mode_flags);
+  va_end (ap);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_swscanf, __isoc23_swscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfscanf.c
new file mode 100644
index 0000000000..876cc0c6d0
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfscanf.c
@@ -0,0 +1,30 @@
+/* Wrapper for __isoc23_vfscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <libio/libioP.h>
+#include <stdio.h>
+
+extern int
+___ieee128_isoc23_vfscanf (FILE *fp, const char *format, va_list ap)
+{
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vfscanf, __isoc23_vfscanfieee128)
+hidden_def (___ieee128_isoc23_vfscanf)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfwscanf.c
new file mode 100644
index 0000000000..752b245343
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vfwscanf.c
@@ -0,0 +1,28 @@
+/* Wrapper for __isoc23_vfwscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_vfwscanf (FILE *fp, const wchar_t *format, va_list ap)
+{
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfwscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vfwscanf, __isoc23_vfwscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vscanf.c
new file mode 100644
index 0000000000..ef36bd162f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vscanf.c
@@ -0,0 +1,28 @@
+/* Wrapper for __isoc23_vscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc23_vscanf (const char *format, va_list ap)
+{
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfscanf_internal (stdin, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vscanf, __isoc23_vscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vsscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vsscanf.c
new file mode 100644
index 0000000000..5524d788a7
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vsscanf.c
@@ -0,0 +1,32 @@
+/* Wrapper for __isoc23_vsscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_vsscanf (const char *string, const char *format, va_list ap)
+{
+  _IO_strfile sf;
+  FILE *fp = _IO_strfile_read (&sf, string);
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vsscanf, __isoc23_vsscanfieee128)
+hidden_def (___ieee128_isoc23_vsscanf)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c
new file mode 100644
index 0000000000..4e893f2942
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vswscanf.c
@@ -0,0 +1,33 @@
+/* Wrapper for __isoc23_vswscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <libioP.h>
+#include <wchar.h>
+#include <strfile.h>
+
+extern int
+___ieee128_isoc23_vswscanf (wchar_t *string, const wchar_t *format, va_list ap)
+{
+  _IO_strfile sf;
+  struct _IO_wide_data wd;
+  FILE *fp = _IO_strfile_readw (&sf, &wd, string);
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfwscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vswscanf, __isoc23_vswscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vwscanf.c
new file mode 100644
index 0000000000..a68239d9f0
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_vwscanf.c
@@ -0,0 +1,28 @@
+/* Wrapper for __isoc23_vwscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_vwscanf (const wchar_t *format, va_list ap)
+{
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+  return __vfwscanf_internal (stdin, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc23_vwscanf, __isoc23_vwscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_wscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_wscanf.c
new file mode 100644
index 0000000000..f596df2a39
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-isoc23_wscanf.c
@@ -0,0 +1,36 @@
+/* Wrapper for __isoc23_wscanf.  IEEE128 version.
+   Copyright (C) 2019-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/>.  */
+
+#include <stdarg.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc23_wscanf (const wchar_t *format, ...)
+{
+  va_list ap;
+  int done;
+  int mode_flags =
+    SCANF_ISOC99_A | SCANF_ISOC23_BIN_CST | SCANF_LDBL_USES_FLOAT128;
+
+  va_start (ap, format);
+  done = __vfwscanf_internal (stdin, format, ap, mode_flags);
+  va_end (ap);
+
+  return done;
+}
+strong_alias (___ieee128_isoc23_wscanf, __isoc23_wscanfieee128)
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c11.c
new file mode 100644
index 0000000000..31706beee6
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-scanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c2x.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c2x.c
new file mode 100644
index 0000000000..f8bb2e4be3
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-scanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu11.c
new file mode 100644
index 0000000000..074aeee208
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-scanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu89.c
new file mode 100644
index 0000000000..6091b33cb6
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-scanf-binary-gnu89.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c11.c
new file mode 100644
index 0000000000..4885a8e265
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-wscanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c2x.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c2x.c
new file mode 100644
index 0000000000..bf0c3da75e
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-wscanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu11.c
new file mode 100644
index 0000000000..49ae257fbd
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-wscanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu89.c
new file mode 100644
index 0000000000..a76be283be
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "ibm128-"
+#include <tst-wscanf-binary-gnu89.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c11.c
new file mode 100644
index 0000000000..2570fcad5c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-scanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c2x.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c2x.c
new file mode 100644
index 0000000000..d09c21394c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-scanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu11.c
new file mode 100644
index 0000000000..4e08b6417f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-scanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu89.c
new file mode 100644
index 0000000000..a917b3bfef
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-scanf-binary-gnu89.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c11.c
new file mode 100644
index 0000000000..a6a6bae1cd
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-wscanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c2x.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c2x.c
new file mode 100644
index 0000000000..7e2d27c6d2
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-wscanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu11.c
new file mode 100644
index 0000000000..d81d2d7136
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-wscanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu89.c
new file mode 100644
index 0000000000..f405923e0f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "ieee128-"
+#include <tst-wscanf-binary-gnu89.c>
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 1d01846476..5b72474aa4 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -42,6 +42,10 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
 		 isoc99_vscanf isoc99_vfscanf isoc99_vsscanf \
 		 isoc99_wscanf isoc99_fwscanf isoc99_swscanf \
 		 isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \
+		 isoc23_scanf isoc23_fscanf isoc23_sscanf \
+		 isoc23_vscanf isoc23_vfscanf isoc23_vsscanf \
+		 isoc23_wscanf isoc23_fwscanf isoc23_swscanf \
+		 isoc23_vwscanf isoc23_vfwscanf isoc23_vswscanf \
 		 nextup nextdown totalorder totalordermag getpayload \
 		 canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
 		 roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
@@ -221,3 +225,43 @@ $(objpfx)tst-nldbl-error.c: tst-ldbl-error.c
 CFLAGS-tst-nldbl-warn.c += -mlong-double-64
 CFLAGS-tst-nldbl-error.c += -mlong-double-64
 endif
+
+ifeq ($(subdir), stdio-common)
+tests += tst-nldbl-scanf-binary-c11 \
+	 tst-nldbl-scanf-binary-c2x \
+	 tst-nldbl-scanf-binary-gnu11 \
+	 tst-nldbl-scanf-binary-gnu89
+
+# Some versions of GCC supported for building glibc do not support -std=c2x, so
+# the test for that version uses -std=c11 and then _ISOC2X_SOURCE is defined in
+# the test as needed.
+CFLAGS-tst-nldbl-scanf-binary-c11.c += -mlong-double-64 -std=c11 \
+				       -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-scanf-binary-c2x.c += -mlong-double-64 -std=c11 \
+				       -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-scanf-binary-gnu11.c += -mlong-double-64 -std=gnu11 \
+					 -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-scanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \
+					 -DOBJPFX=\"$(objpfx)\"
+
+endif
+
+ifeq ($(subdir), wcsmbs)
+tests += tst-nldbl-wscanf-binary-c11 \
+	 tst-nldbl-wscanf-binary-c2x \
+	 tst-nldbl-wscanf-binary-gnu11 \
+	 tst-nldbl-wscanf-binary-gnu89
+
+# Some versions of GCC supported for building glibc do not support -std=c2x, so
+# the test for that version uses -std=c11 and then _ISOC2X_SOURCE is defined in
+# the test as needed.
+CFLAGS-tst-nldbl-wscanf-binary-c11.c += -mlong-double-64 -std=c11 \
+					-DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-wscanf-binary-c2x.c += -mlong-double-64 -std=c11 \
+					-DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-wscanf-binary-gnu11.c += -mlong-double-64 -std=gnu11 \
+					  -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-nldbl-wscanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \
+					  -DOBJPFX=\"$(objpfx)\"
+
+endif
diff --git a/sysdeps/ieee754/ldbl-opt/Versions b/sysdeps/ieee754/ldbl-opt/Versions
index 21a2db6888..5345f1c683 100644
--- a/sysdeps/ieee754/ldbl-opt/Versions
+++ b/sysdeps/ieee754/ldbl-opt/Versions
@@ -84,6 +84,20 @@ libc {
     __nldbl_err; __nldbl_verr; __nldbl_errx; __nldbl_verrx;
     __nldbl_error; __nldbl_error_at_line;
   }
+  GLIBC_2.38 {
+    __nldbl___isoc23_scanf;
+    __nldbl___isoc23_fscanf;
+    __nldbl___isoc23_sscanf;
+    __nldbl___isoc23_vscanf;
+    __nldbl___isoc23_vfscanf;
+    __nldbl___isoc23_vsscanf;
+    __nldbl___isoc23_wscanf;
+    __nldbl___isoc23_fwscanf;
+    __nldbl___isoc23_swscanf;
+    __nldbl___isoc23_vwscanf;
+    __nldbl___isoc23_vfwscanf;
+    __nldbl___isoc23_vswscanf;
+  }
 }
 libm {
   NLDBL_VERSION {
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
index c654ebe416..22112c54d4 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c
@@ -45,6 +45,10 @@ libc_hidden_proto (__nldbl___isoc99_vsscanf)
 libc_hidden_proto (__nldbl___isoc99_vfscanf)
 libc_hidden_proto (__nldbl___isoc99_vswscanf)
 libc_hidden_proto (__nldbl___isoc99_vfwscanf)
+libc_hidden_proto (__nldbl___isoc23_vsscanf)
+libc_hidden_proto (__nldbl___isoc23_vfscanf)
+libc_hidden_proto (__nldbl___isoc23_vswscanf)
+libc_hidden_proto (__nldbl___isoc23_vfwscanf)
 
 /* Compatibility with IEEE double as long double.
    IEEE quad long double is used by default for most programs, so
@@ -992,6 +996,172 @@ __nldbl___isoc99_wscanf (const wchar_t *fmt, ...)
   return ret;
 }
 
+int
+attribute_compat_text_section
+__nldbl___isoc23_vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+  return __vfscanf_internal (s, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+}
+libc_hidden_def (__nldbl___isoc23_vfscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_sscanf (const char *s, const char *fmt, ...)
+{
+  _IO_strfile sf;
+  FILE *f = _IO_strfile_read (&sf, s);
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfscanf_internal (f, fmt, ap,
+			    SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			    | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_vsscanf (const char *s, const char *fmt, va_list ap)
+{
+  _IO_strfile sf;
+  FILE *f = _IO_strfile_read (&sf, s);
+
+  return __vfscanf_internal (f, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+}
+libc_hidden_def (__nldbl___isoc23_vsscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_vscanf (const char *fmt, va_list ap)
+{
+  return __vfscanf_internal (stdin, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_fscanf (FILE *s, const char *fmt, ...)
+{
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfscanf_internal (s, fmt, ap,
+			    SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			    | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_scanf (const char *fmt, ...)
+{
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfscanf_internal (stdin, fmt, ap,
+			    SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			    | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+  return __vfwscanf_internal (s, fmt, ap,
+			      SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			      | SCANF_ISOC23_BIN_CST);
+}
+libc_hidden_def (__nldbl___isoc23_vfwscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+  _IO_strfile sf;
+  struct _IO_wide_data wd;
+  FILE *f = _IO_strfile_readw (&sf, &wd, s);
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfwscanf_internal (f, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_vswscanf (const wchar_t *s, const wchar_t *fmt, va_list ap)
+{
+  _IO_strfile sf;
+  struct _IO_wide_data wd;
+  FILE *f = _IO_strfile_readw (&sf, &wd, s);
+
+  return __vfwscanf_internal (f, fmt, ap,
+			      SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			      | SCANF_ISOC23_BIN_CST);
+}
+libc_hidden_def (__nldbl___isoc23_vswscanf)
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_vwscanf (const wchar_t *fmt, va_list ap)
+{
+  return __vfwscanf_internal (stdin, fmt, ap,
+			      SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			      | SCANF_ISOC23_BIN_CST);
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_fwscanf (FILE *s, const wchar_t *fmt, ...)
+{
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfwscanf_internal (s, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
+int
+attribute_compat_text_section
+__nldbl___isoc23_wscanf (const wchar_t *fmt, ...)
+{
+  va_list ap;
+  int ret;
+
+  va_start (ap, fmt);
+  ret = __vfwscanf_internal (stdin, fmt, ap,
+			     SCANF_LDBL_IS_DBL | SCANF_ISOC99_A
+			     | SCANF_ISOC23_BIN_CST);
+  va_end (ap);
+
+  return ret;
+}
+
 void
 __nldbl_argp_error (const struct argp_state *state, const char *fmt, ...)
 {
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
index 7309e8a80f..d514442d87 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h
@@ -78,6 +78,18 @@ NLDBL_DECL (__isoc99_swscanf);
 NLDBL_DECL (__isoc99_vwscanf);
 NLDBL_DECL (__isoc99_vfwscanf);
 NLDBL_DECL (__isoc99_vswscanf);
+NLDBL_DECL (__isoc23_scanf);
+NLDBL_DECL (__isoc23_fscanf);
+NLDBL_DECL (__isoc23_sscanf);
+NLDBL_DECL (__isoc23_vscanf);
+NLDBL_DECL (__isoc23_vfscanf);
+NLDBL_DECL (__isoc23_vsscanf);
+NLDBL_DECL (__isoc23_wscanf);
+NLDBL_DECL (__isoc23_fwscanf);
+NLDBL_DECL (__isoc23_swscanf);
+NLDBL_DECL (__isoc23_vwscanf);
+NLDBL_DECL (__isoc23_vfwscanf);
+NLDBL_DECL (__isoc23_vswscanf);
 NLDBL_DECL (argp_error);
 NLDBL_DECL (argp_failure);
 NLDBL_DECL (warn);
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fscanf.c
new file mode 100644
index 0000000000..7b5a0565f7
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_fscanf (FILE *stream, const char *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vfscanf (stream, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fwscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fwscanf.c
new file mode 100644
index 0000000000..4ecb340143
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_fwscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_fwscanf (FILE *stream, const wchar_t *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vfwscanf (stream, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_scanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_scanf.c
new file mode 100644
index 0000000000..90ea10c115
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_scanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_scanf (const char *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vfscanf (stdin, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_sscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_sscanf.c
new file mode 100644
index 0000000000..64124e479c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_sscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_sscanf (const char *s, const char *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vsscanf (s, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_swscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_swscanf.c
new file mode 100644
index 0000000000..da84c318b2
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_swscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_swscanf (const wchar_t *s, const wchar_t *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vswscanf (s, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfscanf.c
new file mode 100644
index 0000000000..671aa63ec6
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vfscanf (FILE *s, const char *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vfscanf (s, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfwscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfwscanf.c
new file mode 100644
index 0000000000..b069522cd1
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vfwscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vfwscanf (FILE *s, const wchar_t *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vfwscanf (s, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vscanf.c
new file mode 100644
index 0000000000..f2256f210f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vscanf (const char *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vfscanf (stdin, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vsscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vsscanf.c
new file mode 100644
index 0000000000..96ce46b317
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vsscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vsscanf (const char *string, const char *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vsscanf (string, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vswscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vswscanf.c
new file mode 100644
index 0000000000..0819b55a2c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vswscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vswscanf (const wchar_t *string, const wchar_t *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vswscanf (string, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vwscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vwscanf.c
new file mode 100644
index 0000000000..f92876ec27
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_vwscanf.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_vwscanf (const wchar_t *fmt, va_list ap)
+{
+  return __nldbl___isoc23_vfwscanf (stdin, fmt, ap);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_wscanf.c b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_wscanf.c
new file mode 100644
index 0000000000..cece258845
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-isoc23_wscanf.c
@@ -0,0 +1,15 @@
+#include "nldbl-compat.h"
+
+int
+attribute_hidden
+__isoc23_wscanf (const wchar_t *fmt, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, fmt);
+  done = __nldbl___isoc23_vfwscanf (stdin, fmt, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c11.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c11.c
new file mode 100644
index 0000000000..f5bc396fcc
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-scanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c2x.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c2x.c
new file mode 100644
index 0000000000..4e0cf7570f
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-scanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu11.c
new file mode 100644
index 0000000000..10e228e98a
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-scanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu89.c
new file mode 100644
index 0000000000..c5da04b644
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-scanf-binary-gnu89.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c11.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c11.c
new file mode 100644
index 0000000000..0e66e97cf7
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c11.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-wscanf-binary-c11.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c2x.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c2x.c
new file mode 100644
index 0000000000..7637aab0d4
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c2x.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-wscanf-binary-c2x.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu11.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu11.c
new file mode 100644
index 0000000000..106ec38bce
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu11.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-wscanf-binary-gnu11.c>
diff --git a/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu89.c b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu89.c
new file mode 100644
index 0000000000..61a15619d2
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-gnu89.c
@@ -0,0 +1,2 @@
+#define STDX "nldbl-"
+#include <tst-wscanf-binary-gnu89.c>
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index a0419a13d0..ed0c4789eb 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2294,6 +2294,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2304,6 +2308,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2314,6 +2325,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 62e80648e8..0e2d9c3045 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2633,6 +2633,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2643,6 +2647,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2653,3 +2664,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 9d490fdee8..f1bec1978d 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2730,6 +2730,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2740,6 +2744,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2750,6 +2761,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 50874e92fc..aa874b88d0 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2394,6 +2394,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2404,6 +2408,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2414,3 +2425,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 544b5b2741..afbd57da6f 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -514,6 +514,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -524,6 +528,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -534,6 +545,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index da532a0191..e7364cd3fe 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -511,6 +511,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -521,6 +525,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -531,6 +542,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 6c74a60d69..913fa59215 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2670,6 +2670,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2680,6 +2684,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2690,3 +2701,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 13d30e646f..43af3a9811 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2619,6 +2619,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2629,6 +2633,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2639,6 +2650,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index f5dfa2a20e..af72f8fab0 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2803,6 +2803,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2813,6 +2817,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2823,6 +2834,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist
index 58f1526030..48cbb0fa50 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -2568,6 +2568,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2578,6 +2582,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2588,6 +2599,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
index 46ce2437fe..c15884bb0b 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
@@ -2154,6 +2154,10 @@ GLIBC_2.36 wprintf F
 GLIBC_2.36 write F
 GLIBC_2.36 writev F
 GLIBC_2.36 wscanf F
+GLIBC_2.38 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2164,6 +2168,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2174,3 +2185,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index f34085ce35..3738db81df 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -515,6 +515,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -525,6 +529,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -535,6 +546,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 _Exit F
 GLIBC_2.4 _IO_2_1_stderr_ D 0x98
 GLIBC_2.4 _IO_2_1_stdin_ D 0x98
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 349377d154..ed13627752 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2746,6 +2746,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2756,6 +2760,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2766,6 +2777,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 38e7fb9b2a..8357738621 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2719,6 +2719,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2729,6 +2733,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2739,3 +2750,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index ec4ca27b75..58c5da583d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2716,6 +2716,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2726,6 +2730,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2736,3 +2747,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index bd3f3404fb..d3741945cd 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2711,6 +2711,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2721,6 +2725,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2731,6 +2742,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 9b09fab6ec..5319fdc204 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2709,6 +2709,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2719,6 +2723,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2729,6 +2740,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 3b8f2b8ca3..1743ea6eb9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2717,6 +2717,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2727,6 +2731,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2737,6 +2748,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index 497553414d..9b1f53c6ac 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2619,6 +2619,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2629,6 +2633,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2639,6 +2650,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist
index f67f241498..ae1c6ca1b5 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2758,6 +2758,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2768,6 +2772,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2778,3 +2789,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
index a59a58f44c..a7c572c947 100644
--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
@@ -2140,6 +2140,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2150,6 +2154,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2160,3 +2171,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index a1bcf79955..074fa031a7 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -2773,6 +2773,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2783,6 +2787,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2793,6 +2804,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index c0f28aea45..dfcb4bd2d5 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -2806,6 +2806,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2816,6 +2820,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2826,6 +2837,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 6b4459964f..63bbccf3f9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2527,6 +2527,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2537,6 +2541,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2547,6 +2558,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index e90fb502d2..ab85fd61ef 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2829,6 +2829,14 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fscanfieee128 F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_fwscanfieee128 F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_scanfieee128 F
+GLIBC_2.38 __isoc23_sscanf F
+GLIBC_2.38 __isoc23_sscanfieee128 F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2839,6 +2847,20 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_swscanfieee128 F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfscanfieee128 F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vfwscanfieee128 F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vscanfieee128 F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vsscanfieee128 F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vswscanfieee128 F
+GLIBC_2.38 __isoc23_vwscanf F
+GLIBC_2.38 __isoc23_vwscanfieee128 F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2849,3 +2871,17 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __isoc23_wscanfieee128 F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 29be561b60..b716f5c763 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2396,6 +2396,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2406,6 +2410,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2416,3 +2427,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 506a4e6a65..774e777b65 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2596,6 +2596,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2606,6 +2610,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2616,3 +2627,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 976cd741ee..8625135c48 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -2771,6 +2771,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2781,6 +2785,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2791,6 +2802,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 909ec927dc..d00c7eb262 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2564,6 +2564,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2574,6 +2578,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2584,6 +2595,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 31a777c4aa..b63037241d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2626,6 +2626,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2636,6 +2640,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2646,6 +2657,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 8d43e8c952..d80055617d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2623,6 +2623,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2633,6 +2637,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2643,6 +2654,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 91c552dc4c..5be55c11d2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -2766,6 +2766,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2776,6 +2780,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2786,6 +2797,19 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __nldbl___isoc23_fscanf F
+GLIBC_2.38 __nldbl___isoc23_fwscanf F
+GLIBC_2.38 __nldbl___isoc23_scanf F
+GLIBC_2.38 __nldbl___isoc23_sscanf F
+GLIBC_2.38 __nldbl___isoc23_swscanf F
+GLIBC_2.38 __nldbl___isoc23_vfscanf F
+GLIBC_2.38 __nldbl___isoc23_vfwscanf F
+GLIBC_2.38 __nldbl___isoc23_vscanf F
+GLIBC_2.38 __nldbl___isoc23_vsscanf F
+GLIBC_2.38 __nldbl___isoc23_vswscanf F
+GLIBC_2.38 __nldbl___isoc23_vwscanf F
+GLIBC_2.38 __nldbl___isoc23_wscanf F
 GLIBC_2.4 _IO_fprintf F
 GLIBC_2.4 _IO_printf F
 GLIBC_2.4 _IO_sprintf F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index c5c5e5cf9a..475fdaae15 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2591,6 +2591,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2601,6 +2605,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2611,6 +2622,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index e51996e046..6cfb928bc8 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2542,6 +2542,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2552,6 +2556,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2562,6 +2573,7 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
 GLIBC_2.4 __confstr_chk F
 GLIBC_2.4 __fgets_chk F
 GLIBC_2.4 __fgets_unlocked_chk F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 388536b3be..c735097172 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2648,6 +2648,10 @@ 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 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
 GLIBC_2.38 __isoc23_strtoimax F
 GLIBC_2.38 __isoc23_strtol F
 GLIBC_2.38 __isoc23_strtol_l F
@@ -2658,6 +2662,13 @@ GLIBC_2.38 __isoc23_strtoul_l F
 GLIBC_2.38 __isoc23_strtoull F
 GLIBC_2.38 __isoc23_strtoull_l F
 GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
 GLIBC_2.38 __isoc23_wcstoimax F
 GLIBC_2.38 __isoc23_wcstol F
 GLIBC_2.38 __isoc23_wcstol_l F
@@ -2668,3 +2679,4 @@ GLIBC_2.38 __isoc23_wcstoul_l F
 GLIBC_2.38 __isoc23_wcstoull F
 GLIBC_2.38 __isoc23_wcstoull_l F
 GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F