[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