[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