[PATCH 0/3] Add [v]aprintf(3)

Alejandro Colomar alx@kernel.org
Wed Apr 22 19:34:21 GMT 2026


> Subject: Re: [PATCH 0/3] Add [v]aprintf(3)

I forgot to include v5 in the subject.  :)

On 2026-04-22T20:37:51+0200, Alejandro Colomar wrote:
> 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
> 

-- 
<https://www.alejandro-colomar.es>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20260422/ff21ba00/attachment-0001.sig>


More information about the Libc-alpha mailing list