Cover Letter Detail
Show a cover letter.
GET /api/covers/2226729/?format=api
{ "id": 2226729, "url": "http://patchwork.ozlabs.org/api/covers/2226729/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/cover/cover.1776882798.git.alx@kernel.org/", "project": { "id": 41, "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api", "name": "GNU C Library", "link_name": "glibc", "list_id": "libc-alpha.sourceware.org", "list_email": "libc-alpha@sourceware.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<cover.1776882798.git.alx@kernel.org>", "list_archive_url": null, "date": "2026-04-22T18:37:51", "name": "[0/3] Add [v]aprintf(3)", "submitter": { "id": 86795, "url": "http://patchwork.ozlabs.org/api/people/86795/?format=api", "name": "Alejandro Colomar", "email": "alx@kernel.org" }, "mbox": "http://patchwork.ozlabs.org/project/glibc/cover/cover.1776882798.git.alx@kernel.org/mbox/", "series": [ { "id": 501084, "url": "http://patchwork.ozlabs.org/api/series/501084/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=501084", "date": "2026-04-22T18:37:55", "name": "Add [v]aprintf(3)", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/501084/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2226729/comments/", "headers": { "Return-Path": "<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "libc-alpha@sourceware.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "libc-alpha@sourceware.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=q5KGw11G;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=q5KGw11G", "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=kernel.org", "sourceware.org; spf=pass smtp.mailfrom=kernel.org", "server2.sourceware.org;\n arc=none smtp.remote-ip=2600:3c0a:e001:78e:0:1991:8:25" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g17jk3d1Zz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:56:26 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 663FF409BE86\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:56:24 +0000 (GMT)", "from sea.source.kernel.org (sea.source.kernel.org\n [IPv6:2600:3c0a:e001:78e:0:1991:8:25])\n by sourceware.org (Postfix) with ESMTPS id 0D64043326A0\n for <libc-alpha@sourceware.org>; Wed, 22 Apr 2026 18:37:58 +0000 (GMT)", "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n by sea.source.kernel.org (Postfix) with ESMTP id 782504416D;\n Wed, 22 Apr 2026 18:37:55 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id 2190FC19425;\n Wed, 22 Apr 2026 18:37:52 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 663FF409BE86", "OpenDKIM Filter v2.11.0 sourceware.org 0D64043326A0" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 0D64043326A0", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 0D64043326A0", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776883078; cv=none;\n b=He6u2BHg9Y7xeh0u2r5G45hxKlCxiCH/YK8YWFNRXwtHNaJ+dC61FtfkHV2GVfCS/4GjrWUZf1jeVnzbVKkS67TbGcXgFdO02xoSJ+1uR1CpBAXlYLJ26g2XE2aWghYrUp7RmipORoGj8Hr4wz8Dfg3UrxqZ8aRIRvikKxsUA/U=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776883078; c=relaxed/simple;\n bh=A2GAFE22m9+6bMKx4ruddxtJyqGBvZo74yESkmDAYtA=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=GNWX1dPk6Cr8B5bEdWpe0y/oEF3wKU2DCUPZW3tBVOP4p3HK6Y6io9sCpljhyDTniq2Y5qBFB5dOgXCZfmg/A/KconRD8SsEdvVq6BOx+i7cuy2r0t+maGJsp8D+hMPLVb0s0uQvrreahNeTIc40F41fHnyzpcZgx0mCLhnVux8=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n s=k20201202; t=1776883075;\n bh=A2GAFE22m9+6bMKx4ruddxtJyqGBvZo74yESkmDAYtA=;\n h=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n b=q5KGw11GREviLIRaGi7EPnwCQz/gSJHjt8cmFNoOMq3OXL9/d99OUsDyL5HlSuJY1\n 7TPXKlwqo0nl0ti3BtSeP+aABKM8USPuKEPaHtnc0tUyWCrs5ilt/fn+/edcnYcAiq\n xoma3QvYi0te37DAPyu9L91y5gki+3wVS7ehx6bF7kXLhvTxbg2H1ksXcIbkj4aoET\n yso2aPyuL4KthA76WffFYVlcNHSlP5vaX3EDurQxEbZxgz26+arnTtMy1uHqEQKZNM\n 6YuB48rFP90DABHYJGd6uf4+y+ge35lVxXB8vr4D11qr45GQHCthk5pMWFEKoN30Oz\n bQITjXc8dDqfA==", "Date": "Wed, 22 Apr 2026 20:37:51 +0200", "From": "Alejandro Colomar <alx@kernel.org>", "To": "libc-alpha@sourceware.org", "Cc": "Alejandro Colomar <alx@kernel.org>, Joseph Myers <josmyers@redhat.com>,\n Paul Eggert <eggert@cs.ucla.edu>,\n Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,\n Florian Weimer <fweimer@redhat.com>, \"Dmitry V. Levin\" <ldv@altlinux.org>,\n Archie Cobbs <archie.cobbs@gmail.com>, Solar Designer <solar@openwall.com>,\n Sam James <sam@gentoo.org>", "Subject": "[PATCH 0/3] Add [v]aprintf(3)", "Message-ID": "<cover.1776882798.git.alx@kernel.org>", "X-Mailer": "git-send-email 2.53.0", "References": "<abSVWeS3nHmkZSKn@devuan>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=utf-8", "Content-Disposition": "inline", "In-Reply-To": "<abSVWeS3nHmkZSKn@devuan>", "X-BeenThere": "libc-alpha@sourceware.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Libc-alpha mailing list <libc-alpha.sourceware.org>", "List-Unsubscribe": "<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>", "List-Archive": "<https://sourceware.org/pipermail/libc-alpha/>", "List-Post": "<mailto:libc-alpha@sourceware.org>", "List-Help": "<mailto:libc-alpha-request@sourceware.org?subject=help>", "List-Subscribe": "<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>", "Errors-To": "libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org" }, "content": "Hi!\n\nSorry for the delay; Easter and other stuff got in the way.\n\nIn v5:\n\n- I've updated .abilist files, and the remaining Versions files under\n sysdeps/.\n- I've also added tests for the _chk implementations.\n- And fixed some incorrect brace in a Versions file.\n- While writing the tests for the _chk versions, I realized a typo in\n existing code, so I've fixed it in patch 3/3.\n\nI've tested this with make && make check. That seems to pass.\n\n\t$ diff -u ../.tmp.master/tests.sum tests.sum \n\t--- ../.tmp.master/tests.sum\t2026-04-22 20:31:29.671899499 +0200\n\t+++ tests.sum\t2026-04-22 18:51:34.647754287 +0200\n\t@@ -1936,6 +1936,7 @@\n\t PASS: libio/test-fputs-unbuffered-full\n\t PASS: libio/test-fputws-unbuffered-full\n\t PASS: libio/test-freopen\n\t+PASS: libio/tst-aprintf\n\t PASS: libio/tst-asprintf-null\n\t PASS: libio/tst-atime\n\t PASS: libio/tst-bz22415\n\nIf there's anything else I'd need to test please let me know (and how).\n\nSee range-diff below for the exact changes compared to v4. I think this\nis ready (thus, now PATCH instead of RFC).\n\n\nHave a lovely day!\nAlex\n\n\nAlejandro Colomar (3):\n Add [v]aprintf(3)\n manual/: Prefer aprintf(3) over asprintf(3)\n sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: Fix\n typo\n\n debug/Makefile | 4 ++\n debug/Versions | 3 +\n debug/aprintf_chk.c | 51 ++++++++++++++++\n debug/vaprintf_chk.c | 39 ++++++++++++\n include/stdio.h | 8 +++\n libio/Makefile | 4 +-\n libio/Versions | 3 +\n libio/bits/stdio-ldbl.h | 5 ++\n libio/bits/stdio2-decl.h | 8 +++\n libio/bits/stdio2.h | 42 +++++++++++++\n libio/stdio.h | 13 ++++\n libio/tst-aprintf.c | 57 ++++++++++++++++++\n libio/vaprintf.c | 39 ++++++++++++\n manual/examples/rprintf.c | 4 +-\n manual/stdio.texi | 30 +++++++++-\n manual/string.texi | 2 +-\n stdio-common/Makefile | 2 +\n stdio-common/Versions | 3 +\n stdio-common/aprintf.c | 40 +++++++++++++\n sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 8 ++-\n sysdeps/ieee754/ldbl-128ibm-compat/Versions | 6 ++\n .../ldbl-128ibm-compat/ieee128-aprintf.c | 36 +++++++++++\n .../ldbl-128ibm-compat/ieee128-aprintf_chk.c | 40 +++++++++++++\n .../ldbl-128ibm-compat/ieee128-vaprintf.c | 29 +++++++++\n .../ldbl-128ibm-compat/ieee128-vaprintf_chk.c | 31 ++++++++++\n .../test-printf-chk-ldbl-compat.c | 33 ++++++++++-\n .../test-printf-ldbl-compat.c | 31 +++++++++-\n sysdeps/ieee754/ldbl-opt/Makefile | 6 ++\n sysdeps/ieee754/ldbl-opt/Versions | 10 ++++\n sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c | 17 ++++++\n sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c | 15 +++++\n sysdeps/ieee754/ldbl-opt/nldbl-compat.c | 59 +++++++++++++++++++\n sysdeps/ieee754/ldbl-opt/nldbl-compat.h | 5 ++\n sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c | 9 +++\n sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c | 8 +++\n sysdeps/mach/hurd/i386/libc.abilist | 5 ++\n sysdeps/mach/hurd/x86_64/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/aarch64/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/alpha/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/arc/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/arm/be/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/arm/le/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/csky/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/hppa/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/i386/libc.abilist | 5 ++\n .../sysv/linux/loongarch/lp64/libc.abilist | 5 ++\n .../sysv/linux/m68k/coldfire/libc.abilist | 5 ++\n .../unix/sysv/linux/m68k/m680x0/libc.abilist | 5 ++\n .../sysv/linux/microblaze/be/libc.abilist | 5 ++\n .../sysv/linux/microblaze/le/libc.abilist | 5 ++\n .../sysv/linux/mips/mips32/fpu/libc.abilist | 5 ++\n .../sysv/linux/mips/mips32/nofpu/libc.abilist | 5 ++\n .../sysv/linux/mips/mips64/n32/libc.abilist | 5 ++\n .../sysv/linux/mips/mips64/n64/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/or1k/libc.abilist | 5 ++\n .../linux/powerpc/powerpc32/fpu/libc.abilist | 5 ++\n .../powerpc/powerpc32/nofpu/libc.abilist | 5 ++\n .../linux/powerpc/powerpc64/be/libc.abilist | 5 ++\n .../linux/powerpc/powerpc64/le/libc.abilist | 5 ++\n .../unix/sysv/linux/riscv/rv32/libc.abilist | 5 ++\n .../unix/sysv/linux/riscv/rv64/libc.abilist | 5 ++\n .../unix/sysv/linux/s390/s390-32/libc.abilist | 5 ++\n .../unix/sysv/linux/s390/s390-64/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/sh/be/libc.abilist | 5 ++\n sysdeps/unix/sysv/linux/sh/le/libc.abilist | 5 ++\n .../sysv/linux/sparc/sparc32/libc.abilist | 5 ++\n .../sysv/linux/sparc/sparc64/libc.abilist | 5 ++\n .../unix/sysv/linux/x86_64/64/libc.abilist | 5 ++\n .../unix/sysv/linux/x86_64/x32/libc.abilist | 5 ++\n 69 files changed, 858 insertions(+), 12 deletions(-)\n create mode 100644 debug/aprintf_chk.c\n create mode 100644 debug/vaprintf_chk.c\n create mode 100644 libio/tst-aprintf.c\n create mode 100644 libio/vaprintf.c\n create mode 100644 stdio-common/aprintf.c\n create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c\n create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf_chk.c\n create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf.c\n create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c\n create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c\n create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c\n create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c\n create mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c\n\nRange-diff:\n1: f927e1d9 ! 1: 4c17f2c5 Add [v]aprintf(3)\n @@ stdio-common/Makefile: routines := \\\n \n ## stdio-common/Versions ##\n @@ stdio-common/Versions: libc {\n - __isoc23_vfscanf;\n __isoc23_sscanf;\n __isoc23_vsscanf;\n + }\n + GLIBC_2.44 {\n + aprintf;\n - }\n ++ }\n GLIBC_PRIVATE {\n # global variables\n + _itoa_lower_digits;\n \n ## stdio-common/aprintf.c (new) ##\n @@\n @@ sysdeps/ieee754/ldbl-128ibm-compat/Makefile: routines_no_fortify += \\\n ieee128-vdprintf \\\n ieee128-vfprintf \\\n \n + ## sysdeps/ieee754/ldbl-128ibm-compat/Versions ##\n +@@ sysdeps/ieee754/ldbl-128ibm-compat/Versions: libc {\n + __isoc23_vswscanfieee128;\n + __isoc23_vwscanfieee128;\n + }\n ++ GLIBC_2.44 {\n ++ __aprintfieee128;\n ++ __vaprintfieee128;\n ++ __aprintf_chkieee128;\n ++ __vaprintf_chkieee128;\n ++ }\n + }\n +\n ## sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c (new) ##\n @@\n +/* Wrapper for aprintf. IEEE128 version.\n @@ sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c (new)\n +}\n +strong_alias (___ieee128___vaprintf_chk, __vaprintf_chkieee128)\n \n + ## sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c ##\n +@@\n + static void\n + do_test_call_varg (FILE *stream, const char *format, ...)\n + {\n +- char *buffer = NULL;\n ++ char *buffer;\n + char string[128];\n + int res;\n + va_list args;\n + \n ++ printf (\"%20s\", \"__vaprintf_chk: \");\n ++ va_start (args, format);\n ++ buffer = __vaprintf_chk (1, format, args);\n ++ va_end (args);\n ++ if (buffer == NULL)\n ++ printf (\"Error using vaprintf\\n\");\n ++ else\n ++ printf (\"%s\", buffer);\n ++ free (buffer);\n ++ printf (\"\\n\");\n ++\n + printf (\"%20s\", \"__vasprintf_chk: \");\n ++ buffer = NULL;\n + va_start (args, format);\n + res = __vasprintf_chk (&buffer, 1, format, args);\n + va_end (args);\n +@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: static void\n + do_test_call_rarg (FILE *stream, const char *format, long double ld,\n + \t\t double d)\n + {\n +- char *buffer = NULL;\n ++ char *buffer;\n + char string[128];\n + int res;\n + \n ++ printf (\"%20s\", \"__aprintf_chk: \");\n ++ buffer = __aprintf_chk (1, format, ld, d);\n ++ if (buffer == NULL)\n ++ printf (\"Error using aprintf\\n\");\n ++ else\n ++ printf (\"%s\", buffer);\n ++ free (buffer);\n ++ printf (\"\\n\");\n ++\n + printf (\"%20s\", \"__asprintf_chk: \");\n ++ buffer = NULL;\n + res = __asprintf_chk (&buffer, 1, format, ld, d);\n + if (res == -1)\n + printf (\"Error using vasprintf\\n\");\n +@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: do_test (void)\n + \n + /* Compare against the expected output. */\n + const char *expected =\n ++ \" __aprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __asprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __dprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __fprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __printf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __snprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __sprintf_chk: -1.0000000000, -1.0000000000\\n\"\n ++ \" __vaprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vasprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vdprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vfprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vsnprintf_chk: -1.0000000000, -1.0000000000\\n\"\n + \" __vsprintf_chk: -1.0000000000, -1.0000000000\\n\"\n ++ \" __aprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __asprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __dprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __fprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __printf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __snprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __sprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n ++ \" __vaprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vasprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vdprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vfprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vsnprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" __vsprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n ++ \" __vaprintf_chk: 3.000000, 2.000000, 1.000000\\n\"\n + \" __vasprintf_chk: 3.000000, 2.000000, 1.000000\\n\"\n + \" __vdprintf_chk: 3.000000, 2.000000, 1.000000\\n\"\n + \" __vfprintf_chk: 3.000000, 2.000000, 1.000000\\n\"\n +\n + ## sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c ##\n +@@\n + static void\n + do_test_call_varg (FILE *stream, const char *format, ...)\n + {\n +- char *buffer = NULL;\n ++ char *buffer;\n + char string[128];\n + va_list args;\n + int ret;\n + \n ++ printf (\"%15s\", \"vaprintf: \");\n ++ va_start (args, format);\n ++ buffer = vaprintf (format, args);\n ++ va_end (args);\n ++ if (buffer == NULL)\n ++ printf (\"Error using vaprintf\\n\");\n ++ else\n ++ printf (\"%s\", buffer);\n ++ free (buffer);\n ++ printf (\"\\n\");\n ++\n + printf (\"%15s\", \"vasprintf: \");\n ++ buffer = NULL;\n + va_start (args, format);\n + ret = vasprintf (&buffer, format, args);\n + va_end (args);\n +@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c: do_test_call_varg (FILE *stream, const char *format, ...)\n + static void\n + do_test_call_rarg (FILE *stream, const char *format, long double ld, double d)\n + {\n +- char *buffer = NULL;\n ++ char *buffer;\n + char string[128];\n + int ret;\n + \n ++ printf (\"%15s\", \"aprintf: \");\n ++ buffer = aprintf (format, ld, d);\n ++ if (buffer == NULL)\n ++ printf (\"Error using aprintf\\n\");\n ++ else\n ++ printf (\"%s\", buffer);\n ++ free (buffer);\n ++ printf (\"\\n\");\n ++\n + printf (\"%15s\", \"asprintf: \");\n ++ buffer = NULL;\n + ret = asprintf (&buffer, format, ld, d);\n + if (ret == -1 || buffer == NULL)\n + printf (\"Error using asprintf\\n\");\n +@@ sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c: do_test (void)\n + \n + /* Compare against the expected output. */\n + const char *expected =\n ++ \" aprintf: -1.0000000000, -1.0000000000\\n\"\n + \" asprintf: -1.0000000000, -1.0000000000\\n\"\n + \" dprintf: -1.0000000000, -1.0000000000\\n\"\n + \" fprintf: -1.0000000000, -1.0000000000\\n\"\n + \" printf: -1.0000000000, -1.0000000000\\n\"\n + \" snprintf: -1.0000000000, -1.0000000000\\n\"\n + \" sprintf: -1.0000000000, -1.0000000000\\n\"\n ++ \" vaprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vasprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vdprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vfprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vsnprintf: -1.0000000000, -1.0000000000\\n\"\n + \" vsprintf: -1.0000000000, -1.0000000000\\n\"\n ++ \" aprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" asprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" dprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" fprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" printf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" snprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" sprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n ++ \" vaprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vasprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vdprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vfprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vsnprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n + \" vsprintf: -0x1.0000000000p+0, -0x1.0000000000p+0\\n\"\n ++ \" vaprintf: 3.000000, 2.000000, 1.000000\\n\"\n + \" vasprintf: 3.000000, 2.000000, 1.000000\\n\"\n + \" vdprintf: 3.000000, 2.000000, 1.000000\\n\"\n + \" vfprintf: 3.000000, 2.000000, 1.000000\\n\"\n +\n ## sysdeps/ieee754/ldbl-opt/Makefile ##\n @@ sysdeps/ieee754/ldbl-opt/Makefile: libnldbl-calls = \\\n acos \\\n @@ sysdeps/ieee754/ldbl-opt/Makefile: routines_no_fortify += \\\n nldbl-vdprintf \\\n nldbl-vfprintf \\\n \n + ## sysdeps/ieee754/ldbl-opt/Versions ##\n +@@ sysdeps/ieee754/ldbl-opt/Versions: libc {\n + __nldbl___isoc23_vfwscanf;\n + __nldbl___isoc23_vswscanf;\n + }\n ++ GLIBC_2.44 {\n ++ __aprintf;\n ++ aprintf;\n ++ vaprintf;\n ++ __nldbl___aprintf;\n ++ __nldbl_aprintf;\n ++ __nldbl_vaprintf;\n ++ __nldbl___aprintf_chk;\n ++ __nldbl___vaprintf_chk;\n ++ }\n + }\n + libm {\n + NLDBL_VERSION {\n +\n ## sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c (new) ##\n @@\n +#include \"nldbl-compat.h\"\n @@ sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c (new)\n + return p;\n +}\n \n + ## sysdeps/ieee754/ldbl-opt/nldbl-compat.c ##\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: libc_hidden_proto (__nldbl___isoc23_vfwscanf)\n + we don't need to split this into one file per function for the\n + sake of statically linked programs. */\n + \n ++int\n ++attribute_compat_text_section\n ++__nldbl___aprintf (const char *fmt, ...)\n ++{\n ++ va_list ap;\n ++ char *p;\n ++\n ++ va_start (ap, fmt);\n ++ if (__vasprintf_internal (&p, fmt, ap, PRINTF_LDBL_IS_DBL) < 0)\n ++ p = NULL;\n ++ va_end (ap);\n ++\n ++ return p;\n ++}\n ++weak_alias (__nldbl___aprintf, __nldbl_aprintf)\n ++\n + int\n + attribute_compat_text_section\n + __nldbl___asprintf (char **string_ptr, const char *fmt, ...)\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: __nldbl_swprintf (wchar_t *s, size_t n, const wchar_t *fmt, ...)\n + return ret;\n + }\n + \n ++char *\n ++attribute_compat_text_section weak_function\n ++__nldbl_vaprintf (const char *fmt, va_list ap)\n ++{\n ++ char *p;\n ++ return __vasprintf_internal (&p, fmt, ap, PRINTF_LDBL_IS_DBL) < 0 ? NULL : p;\n ++}\n ++\n + int\n + attribute_compat_text_section weak_function\n + __nldbl_vasprintf (char **result_ptr, const char *fmt, va_list ap)\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: __nldbl___wprintf_chk (int flag, const wchar_t *fmt, ...)\n + return ret;\n + }\n + \n ++char *\n ++attribute_compat_text_section\n ++__nldbl___vaprintf_chk (int flag, const char *fmt, va_list ap)\n ++{\n ++ char *p;\n ++ unsigned int mode = PRINTF_LDBL_IS_DBL;\n ++ if (flag > 0)\n ++ mode |= PRINTF_FORTIFY;\n ++\n ++ return __vasprintf_internal (&p, fmt, ap, mode) < 0 ? NULL : p;\n ++}\n ++\n ++char *\n ++attribute_compat_text_section\n ++__nldbl___aprintf_chk (int flag, const char *fmt, ...)\n ++{\n ++ va_list ap;\n ++ char *p;\n ++ unsigned int mode = PRINTF_LDBL_IS_DBL;\n ++ if (flag > 0)\n ++ mode |= PRINTF_FORTIFY;\n ++\n ++ va_start (ap, fmt);\n ++ if (__vasprintf_internal (&p, fmt, ap, mode) < 0)\n ++ p = NULL;\n ++ va_end (ap);\n ++\n ++ return p;\n ++}\n ++\n + int\n + attribute_compat_text_section\n + __nldbl___vasprintf_chk (char **ptr, int flag, const char *fmt, va_list ap)\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.c: compat_symbol (libc, __nldbl___fprintf_chk, __fprintf_chk, GLIBC_2_3_4);\n + compat_symbol (libc, __nldbl___vprintf_chk, __vprintf_chk, GLIBC_2_3_4);\n + compat_symbol (libc, __nldbl___vfprintf_chk, __vfprintf_chk, GLIBC_2_3_4);\n + #endif\n ++#if LONG_DOUBLE_COMPAT(libc, GLIBC_2_4_4)\n ++compat_symbol (libc, __nldbl_aprintf, aprintf, GLIBC_2_4_4);\n ++compat_symbol (libc, __nldbl_vaprintf, vaprintf, GLIBC_2_4_4);\n ++compat_symbol (libc, __nldbl___aprintf, __aprintf, GLIBC_2_4_4);\n ++#endif\n +\n + ## sysdeps/ieee754/ldbl-opt/nldbl-compat.h ##\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: NLDBL_DECL (_IO_vfscanf);\n + NLDBL_DECL (vfscanf);\n + NLDBL_DECL (vfwscanf);\n + NLDBL_DECL (obstack_vprintf);\n ++NLDBL_DECL (vaprintf);\n + NLDBL_DECL (vasprintf);\n + NLDBL_DECL (dprintf);\n + NLDBL_DECL (vdprintf);\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: NLDBL_DECL (vsprintf);\n + NLDBL_DECL (vsscanf);\n + NLDBL_DECL (vswprintf);\n + NLDBL_DECL (vswscanf);\n ++NLDBL_DECL (__aprintf);\n ++NLDBL_DECL (aprintf);\n + NLDBL_DECL (__asprintf);\n + NLDBL_DECL (asprintf);\n + NLDBL_DECL (__printf_fp);\n +@@ sysdeps/ieee754/ldbl-opt/nldbl-compat.h: extern int __nldbl___vsnprintf_chk (char *__restrict, size_t, int, size_t,\n + extern int __nldbl___vswprintf_chk (wchar_t *__restrict, size_t, int, size_t,\n + \t\t\t\t const wchar_t *__restrict, __gnuc_va_list)\n + __THROW;\n ++extern char *__nldbl___vaprintf_chk (int, const char *, __gnuc_va_list)\n ++ __THROW __attribute_malloc__;\n + extern int __nldbl___vasprintf_chk (char **, int, const char *, __gnuc_va_list)\n + __THROW;\n + extern int __nldbl___vdprintf_chk (int, int, const char *, __gnuc_va_list);\n +\n ## sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c (new) ##\n @@\n +#include \"nldbl-compat.h\"\n @@ sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c (new)\n +{\n + return __nldbl___vaprintf_chk (flag, fmt, ap);\n +}\n +\n + ## sysdeps/mach/hurd/i386/libc.abilist ##\n +@@ sysdeps/mach/hurd/i386/libc.abilist: GLIBC_2.43 tss_delete F\n + GLIBC_2.43 tss_get F\n + GLIBC_2.43 tss_set F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/mach/hurd/x86_64/libc.abilist ##\n +@@ sysdeps/mach/hurd/x86_64/libc.abilist: GLIBC_2.43 tss_delete F\n + GLIBC_2.43 tss_get F\n + GLIBC_2.43 tss_set F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + HURD_CTHREADS_0.3 __mutex_init F\n + HURD_CTHREADS_0.3 __mutex_lock F\n + HURD_CTHREADS_0.3 __mutex_trylock F\n +\n + ## sysdeps/unix/sysv/linux/aarch64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/aarch64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/alpha/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/alpha/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/arc/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/arc/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/arm/be/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/arm/be/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/arm/le/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/arm/le/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/csky/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/csky/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/hppa/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/hppa/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/i386/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/i386/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/microblaze/be/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/microblaze/be/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/microblaze/le/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/microblaze/le/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/or1k/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/or1k/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n +\n + ## sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/sh/be/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/sh/be/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/sh/le/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/sh/le/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/x86_64/64/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n + GLIBC_2.5 __readlinkat_chk F\n + GLIBC_2.5 inet6_opt_append F\n + GLIBC_2.5 inet6_opt_find F\n +\n + ## sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist ##\n +@@ sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: GLIBC_2.43 memset_explicit F\n + GLIBC_2.43 mseal F\n + GLIBC_2.43 openat2 F\n + GLIBC_2.43 umaxabs F\n ++GLIBC_2.44 __aprintf F\n ++GLIBC_2.44 __aprintf_chk F\n ++GLIBC_2.44 __vaprintf_chk F\n ++GLIBC_2.44 aprintf F\n ++GLIBC_2.44 vaprintf F\n2: f1dca5c0 = 2: 7ad30709 manual/: Prefer aprintf(3) over asprintf(3)\n-: -------- > 3: 22c4ae3f sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c: Fix typo" }