[PATCH 0/3] Add [v]aprintf(3)
Alejandro Colomar
alx@kernel.org
Wed Apr 22 18:37:51 GMT 2026
Hi!
Sorry for the delay; Easter and other stuff got in the way.
In v5:
- I've updated .abilist files, and the remaining Versions files under
sysdeps/.
- I've also added tests for the _chk implementations.
- And fixed some incorrect brace in a Versions file.
- While writing the tests for the _chk versions, I realized a typo in
existing code, so I've fixed it in patch 3/3.
I've tested this with make && make check. That seems to pass.
$ diff -u ../.tmp.master/tests.sum tests.sum
--- ../.tmp.master/tests.sum 2026-04-22 20:31:29.671899499 +0200
+++ tests.sum 2026-04-22 18:51:34.647754287 +0200
@@ -1936,6 +1936,7 @@
PASS: libio/test-fputs-unbuffered-full
PASS: libio/test-fputws-unbuffered-full
PASS: libio/test-freopen
+PASS: libio/tst-aprintf
PASS: libio/tst-asprintf-null
PASS: libio/tst-atime
PASS: libio/tst-bz22415
If there's anything else I'd need to test please let me know (and how).
See range-diff below for the exact changes compared to v4. I think this
is ready (thus, now PATCH instead of RFC).
Have a lovely day!
Alex
Alejandro Colomar (3):
Add [v]aprintf(3)
manual/: Prefer aprintf(3) over asprintf(3)
sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: Fix
typo
debug/Makefile | 4 ++
debug/Versions | 3 +
debug/aprintf_chk.c | 51 ++++++++++++++++
debug/vaprintf_chk.c | 39 ++++++++++++
include/stdio.h | 8 +++
libio/Makefile | 4 +-
libio/Versions | 3 +
libio/bits/stdio-ldbl.h | 5 ++
libio/bits/stdio2-decl.h | 8 +++
libio/bits/stdio2.h | 42 +++++++++++++
libio/stdio.h | 13 ++++
libio/tst-aprintf.c | 57 ++++++++++++++++++
libio/vaprintf.c | 39 ++++++++++++
manual/examples/rprintf.c | 4 +-
manual/stdio.texi | 30 +++++++++-
manual/string.texi | 2 +-
stdio-common/Makefile | 2 +
stdio-common/Versions | 3 +
stdio-common/aprintf.c | 40 +++++++++++++
sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 8 ++-
sysdeps/ieee754/ldbl-128ibm-compat/Versions | 6 ++
.../ldbl-128ibm-compat/ieee128-aprintf.c | 36 +++++++++++
.../ldbl-128ibm-compat/ieee128-aprintf_chk.c | 40 +++++++++++++
.../ldbl-128ibm-compat/ieee128-vaprintf.c | 29 +++++++++
.../ldbl-128ibm-compat/ieee128-vaprintf_chk.c | 31 ++++++++++
.../test-printf-chk-ldbl-compat.c | 33 ++++++++++-
.../test-printf-ldbl-compat.c | 31 +++++++++-
sysdeps/ieee754/ldbl-opt/Makefile | 6 ++
sysdeps/ieee754/ldbl-opt/Versions | 10 ++++
sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c | 17 ++++++
sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c | 15 +++++
sysdeps/ieee754/ldbl-opt/nldbl-compat.c | 59 +++++++++++++++++++
sysdeps/ieee754/ldbl-opt/nldbl-compat.h | 5 ++
sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c | 9 +++
sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c | 8 +++
sysdeps/mach/hurd/i386/libc.abilist | 5 ++
sysdeps/mach/hurd/x86_64/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/alpha/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/arc/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/csky/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/hppa/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/i386/libc.abilist | 5 ++
.../sysv/linux/loongarch/lp64/libc.abilist | 5 ++
.../sysv/linux/m68k/coldfire/libc.abilist | 5 ++
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 5 ++
.../sysv/linux/microblaze/be/libc.abilist | 5 ++
.../sysv/linux/microblaze/le/libc.abilist | 5 ++
.../sysv/linux/mips/mips32/fpu/libc.abilist | 5 ++
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 5 ++
.../sysv/linux/mips/mips64/n32/libc.abilist | 5 ++
.../sysv/linux/mips/mips64/n64/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/or1k/libc.abilist | 5 ++
.../linux/powerpc/powerpc32/fpu/libc.abilist | 5 ++
.../powerpc/powerpc32/nofpu/libc.abilist | 5 ++
.../linux/powerpc/powerpc64/be/libc.abilist | 5 ++
.../linux/powerpc/powerpc64/le/libc.abilist | 5 ++
.../unix/sysv/linux/riscv/rv32/libc.abilist | 5 ++
.../unix/sysv/linux/riscv/rv64/libc.abilist | 5 ++
.../unix/sysv/linux/s390/s390-32/libc.abilist | 5 ++
.../unix/sysv/linux/s390/s390-64/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 5 ++
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 5 ++
.../sysv/linux/sparc/sparc32/libc.abilist | 5 ++
.../sysv/linux/sparc/sparc64/libc.abilist | 5 ++
.../unix/sysv/linux/x86_64/64/libc.abilist | 5 ++
.../unix/sysv/linux/x86_64/x32/libc.abilist | 5 ++
69 files changed, 858 insertions(+), 12 deletions(-)
create mode 100644 debug/aprintf_chk.c
create mode 100644 debug/vaprintf_chk.c
create mode 100644 libio/tst-aprintf.c
create mode 100644 libio/vaprintf.c
create mode 100644 stdio-common/aprintf.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf_chk.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf.c
create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c
create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c
create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c
create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c
create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c
Range-diff:
1: f927e1d9 ! 1: 4c17f2c5 Add [v]aprintf(3)
@@ stdio-common/Makefile: routines := \
## stdio-common/Versions ##
@@ stdio-common/Versions: libc {
- __isoc23_vfscanf;
__isoc23_sscanf;
__isoc23_vsscanf;
+ }
+ GLIBC_2.44 {
+ aprintf;
- }
++ }
GLIBC_PRIVATE {
# global variables
+ _itoa_lower_digits;
## stdio-common/aprintf.c (new) ##
@@
@@ sysdeps/ieee754/ldbl-128ibm-compat/Makefile: routines_no_fortify += \
ieee128-vdprintf \
ieee128-vfprintf \
+ ## sysdeps/ieee754/ldbl-128ibm-compat/Versions ##
+@@ sysdeps/ieee754/ldbl-128ibm-compat/Versions: libc {
+ __isoc23_vswscanfieee128;
+ __isoc23_vwscanfieee128;
+ }
++ GLIBC_2.44 {
++ __aprintfieee128;
++ __vaprintfieee128;
++ __aprintf_chkieee128;
++ __vaprintf_chkieee128;
++ }
+ }
+
## sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c (new) ##
@@
+/* Wrapper for aprintf. IEEE128 version.
@@ sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c (new)
+}
+strong_alias (___ieee128___vaprintf_chk, __vaprintf_chkieee128)
+ ## sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c ##
+@@
+ static void
+ do_test_call_varg (FILE *stream, const char *format, ...)
+ {
+- char *buffer = NULL;
++ char *buffer;
+ char string[128];
+ int res;
+ va_list args;
+
++ printf ("%20s", "__vaprintf_chk: ");
++ va_start (args, format);
++ buffer = __vaprintf_chk (1, format, args);
++ va_end (args);
++ if (buffer == NULL)
++ printf ("Error using vaprintf\n");
++ else
++ printf ("%s", buffer);
++ free (buffer);
++ printf ("\n");
++
+ printf ("%20s", "__vasprintf_chk: ");
++ buffer = NULL;
+ va_start (args, format);
+ res = __vasprintf_chk (&buffer, 1, format, args);
+ va_end (args);
+@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: static void
+ do_test_call_rarg (FILE *stream, const char *format, long double ld,
+ double d)
+ {
+- char *buffer = NULL;
++ char *buffer;
+ char string[128];
+ int res;
+
++ printf ("%20s", "__aprintf_chk: ");
++ buffer = __aprintf_chk (1, format, ld, d);
++ if (buffer == NULL)
++ printf ("Error using aprintf\n");
++ else
++ printf ("%s", buffer);
++ free (buffer);
++ printf ("\n");
++
+ printf ("%20s", "__asprintf_chk: ");
++ buffer = NULL;
+ res = __asprintf_chk (&buffer, 1, format, ld, d);
+ if (res == -1)
+ printf ("Error using vasprintf\n");
+@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: do_test (void)
+
+ /* Compare against the expected output. */
+ const char *expected =
++ " __aprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __asprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __dprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __fprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __printf_chk: -1.0000000000, -1.0000000000\n"
+ " __snprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __sprintf_chk: -1.0000000000, -1.0000000000\n"
++ " __vaprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vasprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vdprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vfprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vsnprintf_chk: -1.0000000000, -1.0000000000\n"
+ " __vsprintf_chk: -1.0000000000, -1.0000000000\n"
++ " __aprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __asprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __dprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __fprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __printf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __snprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __sprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
++ " __vaprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vasprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vdprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vfprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vsnprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " __vsprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
++ " __vaprintf_chk: 3.000000, 2.000000, 1.000000\n"
+ " __vasprintf_chk: 3.000000, 2.000000, 1.000000\n"
+ " __vdprintf_chk: 3.000000, 2.000000, 1.000000\n"
+ " __vfprintf_chk: 3.000000, 2.000000, 1.000000\n"
+
+ ## sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c ##
+@@
+ static void
+ do_test_call_varg (FILE *stream, const char *format, ...)
+ {
+- char *buffer = NULL;
++ char *buffer;
+ char string[128];
+ va_list args;
+ int ret;
+
++ printf ("%15s", "vaprintf: ");
++ va_start (args, format);
++ buffer = vaprintf (format, args);
++ va_end (args);
++ if (buffer == NULL)
++ printf ("Error using vaprintf\n");
++ else
++ printf ("%s", buffer);
++ free (buffer);
++ printf ("\n");
++
+ printf ("%15s", "vasprintf: ");
++ buffer = NULL;
+ va_start (args, format);
+ ret = vasprintf (&buffer, format, args);
+ va_end (args);
+@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c: do_test_call_varg (FILE *stream, const char *format, ...)
+ static void
+ do_test_call_rarg (FILE *stream, const char *format, long double ld, double d)
+ {
+- char *buffer = NULL;
++ char *buffer;
+ char string[128];
+ int ret;
+
++ printf ("%15s", "aprintf: ");
++ buffer = aprintf (format, ld, d);
++ if (buffer == NULL)
++ printf ("Error using aprintf\n");
++ else
++ printf ("%s", buffer);
++ free (buffer);
++ printf ("\n");
++
+ printf ("%15s", "asprintf: ");
++ buffer = NULL;
+ ret = asprintf (&buffer, format, ld, d);
+ if (ret == -1 || buffer == NULL)
+ printf ("Error using asprintf\n");
+@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c: do_test (void)
+
+ /* Compare against the expected output. */
+ const char *expected =
++ " aprintf: -1.0000000000, -1.0000000000\n"
+ " asprintf: -1.0000000000, -1.0000000000\n"
+ " dprintf: -1.0000000000, -1.0000000000\n"
+ " fprintf: -1.0000000000, -1.0000000000\n"
+ " printf: -1.0000000000, -1.0000000000\n"
+ " snprintf: -1.0000000000, -1.0000000000\n"
+ " sprintf: -1.0000000000, -1.0000000000\n"
++ " vaprintf: -1.0000000000, -1.0000000000\n"
+ " vasprintf: -1.0000000000, -1.0000000000\n"
+ " vdprintf: -1.0000000000, -1.0000000000\n"
+ " vfprintf: -1.0000000000, -1.0000000000\n"
+ " vprintf: -1.0000000000, -1.0000000000\n"
+ " vsnprintf: -1.0000000000, -1.0000000000\n"
+ " vsprintf: -1.0000000000, -1.0000000000\n"
++ " aprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " asprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " dprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " fprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " printf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " snprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " sprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
++ " vaprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vasprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vdprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vfprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vsnprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
+ " vsprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
++ " vaprintf: 3.000000, 2.000000, 1.000000\n"
+ " vasprintf: 3.000000, 2.000000, 1.000000\n"
+ " vdprintf: 3.000000, 2.000000, 1.000000\n"
+ " vfprintf: 3.000000, 2.000000, 1.000000\n"
+
## sysdeps/ieee754/ldbl-opt/Makefile ##
@@ sysdeps/ieee754/ldbl-opt/Makefile: libnldbl-calls = \
acos \
@@ sysdeps/ieee754/ldbl-opt/Makefile: routines_no_fortify += \
nldbl-vdprintf \
nldbl-vfprintf \
+ ## sysdeps/ieee754/ldbl-opt/Versions ##
+@@ sysdeps/ieee754/ldbl-opt/Versions: libc {
+ __nldbl___isoc23_vfwscanf;
+ __nldbl___isoc23_vswscanf;
+ }
++ GLIBC_2.44 {
++ __aprintf;
++ aprintf;
++ vaprintf;
++ __nldbl___aprintf;
++ __nldbl_aprintf;
++ __nldbl_vaprintf;
++ __nldbl___aprintf_chk;
++ __nldbl___vaprintf_chk;
++ }
+ }
+ libm {
+ NLDBL_VERSION {
+
## sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c (new) ##
@@
+#include "nldbl-compat.h"
@@ sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c (new)
+ return p;
+}
+ ## sysdeps/ieee754/ldbl-opt/nldbl-compat.c ##
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: libc_hidden_proto (__nldbl___isoc23_vfwscanf)
+ we don't need to split this into one file per function for the
+ sake of statically linked programs. */
+
++int
++attribute_compat_text_section
++__nldbl___aprintf (const char *fmt, ...)
++{
++ va_list ap;
++ char *p;
++
++ va_start (ap, fmt);
++ if (__vasprintf_internal (&p, fmt, ap, PRINTF_LDBL_IS_DBL) < 0)
++ p = NULL;
++ va_end (ap);
++
++ return p;
++}
++weak_alias (__nldbl___aprintf, __nldbl_aprintf)
++
+ int
+ attribute_compat_text_section
+ __nldbl___asprintf (char **string_ptr, const char *fmt, ...)
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: __nldbl_swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)
+ return ret;
+ }
+
++char *
++attribute_compat_text_section weak_function
++__nldbl_vaprintf (const char *fmt, va_list ap)
++{
++ char *p;
++ return __vasprintf_internal (&p, fmt, ap, PRINTF_LDBL_IS_DBL) < 0 ? NULL : p;
++}
++
+ int
+ attribute_compat_text_section weak_function
+ __nldbl_vasprintf (char **result_ptr, const char *fmt, va_list ap)
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: __nldbl___wprintf_chk (int flag, const wchar_t *fmt, ...)
+ return ret;
+ }
+
++char *
++attribute_compat_text_section
++__nldbl___vaprintf_chk (int flag, const char *fmt, va_list ap)
++{
++ char *p;
++ unsigned int mode = PRINTF_LDBL_IS_DBL;
++ if (flag > 0)
++ mode |= PRINTF_FORTIFY;
++
++ return __vasprintf_internal (&p, fmt, ap, mode) < 0 ? NULL : p;
++}
++
++char *
++attribute_compat_text_section
++__nldbl___aprintf_chk (int flag, const char *fmt, ...)
++{
++ va_list ap;
++ char *p;
++ unsigned int mode = PRINTF_LDBL_IS_DBL;
++ if (flag > 0)
++ mode |= PRINTF_FORTIFY;
++
++ va_start (ap, fmt);
++ if (__vasprintf_internal (&p, fmt, ap, mode) < 0)
++ p = NULL;
++ va_end (ap);
++
++ return p;
++}
++
+ int
+ attribute_compat_text_section
+ __nldbl___vasprintf_chk (char **ptr, int flag, const char *fmt, va_list ap)
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: compat_symbol (libc, __nldbl___fprintf_chk, __fprintf_chk, GLIBC_2_3_4);
+ compat_symbol (libc, __nldbl___vprintf_chk, __vprintf_chk, GLIBC_2_3_4);
+ compat_symbol (libc, __nldbl___vfprintf_chk, __vfprintf_chk, GLIBC_2_3_4);
+ #endif
++#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_4_4)
++compat_symbol (libc, __nldbl_aprintf, aprintf, GLIBC_2_4_4);
++compat_symbol (libc, __nldbl_vaprintf, vaprintf, GLIBC_2_4_4);
++compat_symbol (libc, __nldbl___aprintf, __aprintf, GLIBC_2_4_4);
++#endif
+
+ ## sysdeps/ieee754/ldbl-opt/nldbl-compat.h ##
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: NLDBL_DECL (_IO_vfscanf);
+ NLDBL_DECL (vfscanf);
+ NLDBL_DECL (vfwscanf);
+ NLDBL_DECL (obstack_vprintf);
++NLDBL_DECL (vaprintf);
+ NLDBL_DECL (vasprintf);
+ NLDBL_DECL (dprintf);
+ NLDBL_DECL (vdprintf);
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: NLDBL_DECL (vsprintf);
+ NLDBL_DECL (vsscanf);
+ NLDBL_DECL (vswprintf);
+ NLDBL_DECL (vswscanf);
++NLDBL_DECL (__aprintf);
++NLDBL_DECL (aprintf);
+ NLDBL_DECL (__asprintf);
+ NLDBL_DECL (asprintf);
+ NLDBL_DECL (__printf_fp);
+@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: extern int __nldbl___vsnprintf_chk (char *__restrict, size_t, int, size_t,
+ extern int __nldbl___vswprintf_chk (wchar_t *__restrict, size_t, int, size_t,
+ const wchar_t *__restrict, __gnuc_va_list)
+ __THROW;
++extern char *__nldbl___vaprintf_chk (int, const char *, __gnuc_va_list)
++ __THROW __attribute_malloc__;
+ extern int __nldbl___vasprintf_chk (char **, int, const char *, __gnuc_va_list)
+ __THROW;
+ extern int __nldbl___vdprintf_chk (int, int, const char *, __gnuc_va_list);
+
## sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c (new) ##
@@
+#include "nldbl-compat.h"
@@ sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c (new)
+{
+ return __nldbl___vaprintf_chk (flag, fmt, ap);
+}
+
+ ## sysdeps/mach/hurd/i386/libc.abilist ##
+@@ sysdeps/mach/hurd/i386/libc.abilist: GLIBC_2.43 tss_delete F
+ GLIBC_2.43 tss_get F
+ GLIBC_2.43 tss_set F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/mach/hurd/x86_64/libc.abilist ##
+@@ sysdeps/mach/hurd/x86_64/libc.abilist: GLIBC_2.43 tss_delete F
+ GLIBC_2.43 tss_get F
+ GLIBC_2.43 tss_set F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ HURD_CTHREADS_0.3 __mutex_init F
+ HURD_CTHREADS_0.3 __mutex_lock F
+ HURD_CTHREADS_0.3 __mutex_trylock F
+
+ ## sysdeps/unix/sysv/linux/aarch64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/aarch64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/alpha/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/alpha/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/arc/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/arc/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/arm/be/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/arm/be/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/arm/le/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/arm/le/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/csky/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/csky/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/hppa/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/hppa/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/i386/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/i386/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/microblaze/be/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/microblaze/be/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/microblaze/le/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/microblaze/le/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/or1k/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/or1k/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+
+ ## sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/sh/be/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/sh/be/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/sh/le/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/sh/le/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/x86_64/64/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
+ GLIBC_2.5 __readlinkat_chk F
+ GLIBC_2.5 inet6_opt_append F
+ GLIBC_2.5 inet6_opt_find F
+
+ ## sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist ##
+@@ sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: GLIBC_2.43 memset_explicit F
+ GLIBC_2.43 mseal F
+ GLIBC_2.43 openat2 F
+ GLIBC_2.43 umaxabs F
++GLIBC_2.44 __aprintf F
++GLIBC_2.44 __aprintf_chk F
++GLIBC_2.44 __vaprintf_chk F
++GLIBC_2.44 aprintf F
++GLIBC_2.44 vaprintf F
2: f1dca5c0 = 2: 7ad30709 manual/: Prefer aprintf(3) over asprintf(3)
-: -------- > 3: 22c4ae3f sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: Fix typo
--
2.53.0
More information about the Libc-alpha
mailing list