get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2226727/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2226727,
    "url": "http://patchwork.ozlabs.org/api/patches/2226727/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/4c17f2c584e30390d8a4418f7628e3fed29445f0.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": "<4c17f2c584e30390d8a4418f7628e3fed29445f0.1776882798.git.alx@kernel.org>",
    "list_archive_url": null,
    "date": "2026-04-22T18:37:55",
    "name": "[1/3] Add [v]aprintf(3)",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "910063abadefbcd289896a0ff1f595c6d987301c",
    "submitter": {
        "id": 86795,
        "url": "http://patchwork.ozlabs.org/api/people/86795/?format=api",
        "name": "Alejandro Colomar",
        "email": "alx@kernel.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/4c17f2c584e30390d8a4418f7628e3fed29445f0.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/patches/2226727/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2226727/checks/",
    "tags": {},
    "related": [],
    "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=lV6HR3mx;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=38.145.34.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=lV6HR3mx",
            "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=172.234.252.31"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.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 4g17hv4NpMz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:55:37 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 578714310DE1\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:55:35 +0000 (GMT)",
            "from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31])\n by sourceware.org (Postfix) with ESMTPS id 9F14248FA83D\n for <libc-alpha@sourceware.org>; Wed, 22 Apr 2026 18:38:00 +0000 (GMT)",
            "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n by sea.source.kernel.org (Postfix) with ESMTP id E31F140704;\n Wed, 22 Apr 2026 18:37:59 +0000 (UTC)",
            "by smtp.kernel.org (Postfix) with ESMTPSA id 4400BC19425;\n Wed, 22 Apr 2026 18:37:57 +0000 (UTC)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 578714310DE1",
            "OpenDKIM Filter v2.11.0 sourceware.org 9F14248FA83D"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 9F14248FA83D",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 9F14248FA83D",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776883080; cv=none;\n b=Y9ZWuYTpsSb8IHMherCIcIFl1UkoTM5TXF2idlsHndz2VLecPDkoCZo/ZCFRED4s3uOvAYbuZBiYB8k65ekay9gzqSABRXFOgvF0OyzxUgiDYCPj4D9wuVTZS2tgmu2a4u/9pQ9OGaBPbYeq1PdQY14pkG9qRe3K6t/VhtaWOA8=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776883080; c=relaxed/simple;\n bh=z0Fxy8t61Uuz4nb9V7phpN65aR0dBAEVBRpBgvtofIs=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=SZbwvqGdI5G0XKFwN4UZH4vrBXh7O+5P42Nb6XUYR6OgtUQSpyA2Uoq3EbJNVX1C9J0sKtI5BUk2FM+HQ0ftSO+Giw0t7AOvccvRPRbX7oeKWS7Dg9+ov0oo3cW2Irpi3Z59LosYJo+/a66eXkLbaklvAdr1bYDJLLn4BXCp+Fk=",
        "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=1776883079;\n bh=z0Fxy8t61Uuz4nb9V7phpN65aR0dBAEVBRpBgvtofIs=;\n h=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n b=lV6HR3mxInZrE3LsJCko5bggtqSZoS0stNrAA7meg+OEMB40BAR0U+ufY/nJsaqlu\n EtRFgeSpdKag+5qEL9/LNHJi4mf/Tl9CYl/KfnTznpJ+uOkGYDctSWkujgbi9OSruK\n EhFQ2WvBASjUxYfMHShi1oQxRxU1klXIxGRZ9icBiniwhUP5EK3iKDJX4L1UokR9Ij\n 2QS4ZufSUP0bMTdFx7VUbV/NKC7vIwsj9tmNmB4YST+7+14XNdO1oxLEn3+iBJHjKl\n s3OeGKg14GRqhiM28bRWHamGGoCPI4rYumenvJ48ig3vIR3h0wixeZ2rT7X5kvDLxP\n Fz+LTdqd/C5DQ==",
        "Date": "Wed, 22 Apr 2026 20:37:55 +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>, Bruno Haible <bruno@clisp.org>",
        "Subject": "[PATCH 1/3] Add [v]aprintf(3)",
        "Message-ID": "\n <4c17f2c584e30390d8a4418f7628e3fed29445f0.1776882798.git.alx@kernel.org>",
        "X-Mailer": "git-send-email 2.53.0",
        "References": "<abSVWeS3nHmkZSKn@devuan>\n <cover.1776882798.git.alx@kernel.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=utf-8",
        "Content-Disposition": "inline",
        "In-Reply-To": "<cover.1776882798.git.alx@kernel.org>",
        "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": "This function is fundamentally the same as asprintf(3) --which was\nstandardized in POSIX.1-2024--.\n\nHowever, it has a key difference, which makes it a much better design.\nInstead of returning the newly allocated pointer through a char**\nparameter, it returns the pointer (like strdup(3)).  The API is as\nsimple as it can be:\n\n\tchar *aprintf(const char *restrict fmt, ...);\n\tchar *vaprintf(const char *restrict fmt, va_list ap);\n\nThis difference has several benefits:\n\n-  One less parameter.  This means less source code for using this API,\n   which implicitly means less chances of making mistakes.  It is also\n   less noise while reading code, which increases readability.\n\n   Especially, we get rid of a pointer-to-pointer parameter, which are\n   especially weird.\n\n-  The function has an prototype that resembles strdup(3).  This\n   functionality is commonly paired with strdup(3) calls, because\n   they're very related.  By having a similar prototype, the code is\n   more naturally paired with\n\n   Compare:\n\n\tif (cond) {\n\t\tp = strdup(\"foo\");\n\t\tif (p == NULL)\n\t\t\tgoto fail;\n\t} else {\n\t\tif (asprintf(&p, \"foo %d\", 42) < 0)\n\t\t\tgoto fail;\n\t}\n   vs\n\tp = cond ? strdup(\"foo\") : aprintf(\"foo %d\", 42);\n\tif (p == NULL)\n\t\tgoto fail;\n\n-  We don't need to fail with EOVERFLOW.  This initial implementation\n   still fails with EOVERFLOW, because it would require a lot of work\n   implementing it in a way that doesn't have such a failure point, but\n   the API has no inherent reasons to fail with EOVERFLOW.\n\n-  This API returns a pointer, which makes it possible to use\n   __attribute__((__malloc__(free))).  This would allow static analysers\n   to know that these APIs allocate memory, which would prevent memory\n   leaks, use-after-free errors, and other common issues of handling\n   memory.\n\nThe name is similar to asprintf(3), removing the 's'.  This is the same\nname that gnulib has used for their implementation.  It also matches the\nname of the n3750 (alx-0007) proposal for ISO C2y.\n\nThe C Committee was worried that such a non-reserved name might be\nunlikely to be viable, as some existing code already uses it.  However:\n\n-  Most code using this name, uses it with the same exact semantics.\n   In those cases, it's not a problem.\n\n-  In the remaining cases, the prototype is different, so they'll\n   eventually get a compiler error for the clash.  This is entirely\n   safe.  And by hiding the name under _GNU_SOURCE, we make that clash\n   less likely.  Once/if this is eventually standard, I expect people\n   will adapt their code, which is entirely reasonable.  Still, then the\n   APIs will be hidden under _ISOC2Y_SOURCE et al., so this will only\n   affect users when they opt-in to such a version.\n\nLink: <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3750.txt>\nCc: Joseph Myers <josmyers@redhat.com>\nCc: Paul Eggert <eggert@cs.ucla.edu>\nCc: Bruno Haible <bruno@clisp.org>\nCc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>\nCc: Florian Weimer <fweimer@redhat.com>\nCc: \"Dmitry V. Levin\" <ldv@altlinux.org>\nCc: Archie Cobbs <archie.cobbs@gmail.com>\nCc: Solar Designer <solar@openwall.com>\nCc: Sam James <sam@gentoo.org>\nSigned-off-by: Alejandro Colomar <alx@kernel.org>\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/stdio.texi                             | 26 ++++++++\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             | 31 +++++++++-\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 67 files changed, 852 insertions(+), 6 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",
    "diff": "diff --git a/debug/Makefile b/debug/Makefile\nindex c6c1069b..765720a1 100644\n--- a/debug/Makefile\n+++ b/debug/Makefile\n@@ -31,6 +31,7 @@ headers\t:= execinfo.h\n routines = \\\n   $(static-only-routines) \\\n   ____longjmp_chk \\\n+  aprintf_chk \\\n   asprintf_chk \\\n   backtrace \\\n   backtracesyms \\\n@@ -94,6 +95,7 @@ routines = \\\n   strncpy_chk \\\n   swprintf_chk \\\n   ttyname_r_chk \\\n+  vaprintf_chk \\\n   vasprintf_chk \\\n   vdprintf_chk \\\n   vfprintf_chk \\\n@@ -143,6 +145,8 @@ CFLAGS-sprintf_chk.c += $(libio-mtsafe)\n CFLAGS-snprintf_chk.c += $(libio-mtsafe)\n CFLAGS-vsprintf_chk.c += $(libio-mtsafe)\n CFLAGS-vsnprintf_chk.c += $(libio-mtsafe)\n+CFLAGS-aprintf_chk.c += $(libio-mtsafe)\n+CFLAGS-vaprintf_chk.c += $(libio-mtsafe)\n CFLAGS-asprintf_chk.c += $(libio-mtsafe)\n CFLAGS-vasprintf_chk.c += $(libio-mtsafe)\n CFLAGS-obprintf_chk.c += $(libio-mtsafe)\ndiff --git a/debug/Versions b/debug/Versions\nindex fc818d29..d87148f5 100644\n--- a/debug/Versions\n+++ b/debug/Versions\n@@ -71,6 +71,9 @@ libc {\n   GLIBC_2.43 {\n     __memset_explicit_chk;\n   }\n+  GLIBC_2.44 {\n+    __aprintf_chk; __vaprintf_chk;\n+  }\n   GLIBC_PRIVATE {\n     __fortify_fail;\n   }\ndiff --git a/debug/aprintf_chk.c b/debug/aprintf_chk.c\nnew file mode 100644\nindex 00000000..30f7811f\n--- /dev/null\n+++ b/debug/aprintf_chk.c\n@@ -0,0 +1,51 @@\n+/* Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <stdarg.h>\n+#include <libio/libioP.h>\n+\n+\n+/* Write formatted output from FORMAT to a string allocated with malloc.  */\n+char *\n+___aprintf_chk (int flag, const char *fmt, ...)\n+{\n+  /* For flag > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n\n+     can only come from read-only format strings.  */\n+  unsigned int mode = (flag > 0) ? PRINTF_FORTIFY : 0;\n+  va_list ap;\n+  char *p;\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+#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1\n+/* This is needed since <bits/stdio-lbdl.h> is included in this case, leading to\n+ * multiple asm redirection of the same symbol\n+ */\n+ldbl_hidden_def (___aprintf_chk, __aprintf_chk)\n+ldbl_strong_alias (___aprintf_chk, __aprintf_chk)\n+#else\n+/* On some systems introduction of ldbl_* macros lead to ABI breakage due to the\n+ * long_double_symbol aliasing.\n+ */\n+strong_alias (___aprintf_chk, __aprintf_chk)\n+libc_hidden_def (__aprintf_chk)\n+#endif\ndiff --git a/debug/vaprintf_chk.c b/debug/vaprintf_chk.c\nnew file mode 100644\nindex 00000000..1ca96633\n--- /dev/null\n+++ b/debug/vaprintf_chk.c\n@@ -0,0 +1,39 @@\n+/* Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.\n+\n+   As a special exception, if you link the code in this file with\n+   files compiled with a GNU compiler to produce an executable,\n+   that does not cause the resulting executable to be covered by\n+   the GNU Lesser General Public License.  This exception does not\n+   however invalidate any other reasons why the executable file\n+   might be covered by the GNU Lesser General Public License.\n+   This exception applies to code released by its copyright holders\n+   in files containing the exception.  */\n+\n+#include <libio/libioP.h>\n+\n+char *\n+__vaprintf_chk (int flag, const char *fmt, va_list ap)\n+{\n+  /* For flag > 0 (i.e. __USE_FORTIFY_LEVEL > 1) request that %n\n+     can only come from read-only format strings.  */\n+  unsigned int mode = (flag > 0) ? PRINTF_FORTIFY : 0;\n+  char *p;\n+\n+  return __vasprintf_internal (&p, fmt, ap, mode) < 0 ? NULL : p;\n+}\n+libc_hidden_def (__vaprintf_chk)\ndiff --git a/include/stdio.h b/include/stdio.h\nindex 88166993..cfdec368 100644\n--- a/include/stdio.h\n+++ b/include/stdio.h\n@@ -77,6 +77,11 @@ extern int __vfprintf_chk (FILE *, int, const char *, __gnuc_va_list);\n stdio_hidden_ldbl_proto (__, vfprintf_chk)\n extern char *__fgets_unlocked_chk (char *buf, size_t size, int n, FILE *fp);\n extern char *__fgets_chk (char *buf, size_t size, int n, FILE *fp);\n+extern char *__aprintf_chk (int, const char *, ...)\n+     __THROW __attribute_malloc__;\n+extern char *__vaprintf_chk (int, const char *, __gnuc_va_list)\n+     __THROW __attribute_malloc__;\n+stdio_hidden_ldbl_proto (__, vaprintf_chk)\n extern int __asprintf_chk (char **, int, const char *, ...) __THROW;\n extern int __vasprintf_chk (char **, int, const char *, __gnuc_va_list) __THROW;\n stdio_hidden_ldbl_proto (__, vasprintf_chk)\n@@ -239,6 +244,7 @@ extern const size_t _sys_errlist_internal_len attribute_hidden;\n extern const char *__get_errlist (int) attribute_hidden;\n extern const char *__get_errname (int) attribute_hidden;\n \n+libc_hidden_ldbl_proto (__aprintf)\n libc_hidden_ldbl_proto (__asprintf)\n \n #  if IS_IN (libc)\n@@ -317,8 +323,10 @@ rtld_hidden_proto (__libc_fatal)\n libc_hidden_proto (__fgets_unlocked_chk)\n \n #if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1\n+libc_hidden_ldbl_proto (__aprintf_chk)\n libc_hidden_ldbl_proto (__asprintf_chk)\n #else\n+libc_hidden_proto (__aprintf_chk)\n libc_hidden_proto (__asprintf_chk)\n #endif\n \ndiff --git a/libio/Makefile b/libio/Makefile\nindex 08e1e0ec..b345f806 100644\n--- a/libio/Makefile\n+++ b/libio/Makefile\n@@ -43,7 +43,7 @@ routines\t:=\t\t\t\t\t\t\t      \\\n \t\t\t\t\t\t\t\t\t      \\\n \tclearerr feof ferror fileno fputc freopen fseek getc getchar\t      \\\n \tmemstream pclose putc putchar rewind setbuf setlinebuf vasprintf      \\\n-\tiovdprintf vscanf vsnprintf obprintf fcloseall fseeko ftello\t      \\\n+\tvaprintf iovdprintf vscanf vsnprintf obprintf fcloseall fseeko ftello \\\n \tfreopen64 fseeko64 ftello64\t\t\t\t\t      \\\n \t\t\t\t\t\t\t\t\t      \\\n \t__fbufsize __freading __fwriting __freadable __fwritable __flbf\t      \\\n@@ -62,6 +62,7 @@ routines_no_fortify += \\\n   iofgetws_u \\\n   iovdprintf \\\n   swprintf \\\n+  vaprintf \\\n   vasprintf \\\n   vsnprintf \\\n   vswprintf \\\n@@ -89,6 +90,7 @@ tests = \\\n   test-fmemopen \\\n   test-fputs-unbuffered-full \\\n   test-fputws-unbuffered-full \\\n+  tst-aprintf \\\n   tst-asprintf-null \\\n   tst-atime \\\n   tst-bz22415 \\\ndiff --git a/libio/Versions b/libio/Versions\nindex b91a7bc9..48ffe3d3 100644\n--- a/libio/Versions\n+++ b/libio/Versions\n@@ -155,6 +155,9 @@ libc {\n     # f*\n     fmemopen;\n   }\n+  GLIBC_2.44 {\n+    vaprintf;\n+  }\n   GLIBC_PRIVATE {\n     # Used by NPTL and librt\n     __libc_fatal;\ndiff --git a/libio/bits/stdio-ldbl.h b/libio/bits/stdio-ldbl.h\nindex 3cbff14e..3b805b3e 100644\n--- a/libio/bits/stdio-ldbl.h\n+++ b/libio/bits/stdio-ldbl.h\n@@ -99,6 +99,9 @@ __LDBL_REDIR_DECL (dprintf)\n #endif\n \n #ifdef __USE_GNU\n+__LDBL_REDIR_DECL (vaprintf)\n+__LDBL_REDIR2_DECL (aprintf)\n+__LDBL_REDIR_DECL (aprintf)\n __LDBL_REDIR_DECL (vasprintf)\n __LDBL_REDIR2_DECL (asprintf)\n __LDBL_REDIR_DECL (asprintf)\n@@ -123,6 +126,8 @@ __LDBL_REDIR2_DECL (dprintf_chk)\n __LDBL_REDIR2_DECL (vdprintf_chk)\n #  endif\n #  ifdef __USE_GNU\n+__LDBL_REDIR2_DECL (aprintf_chk)\n+__LDBL_REDIR2_DECL (vaprintf_chk)\n __LDBL_REDIR2_DECL (asprintf_chk)\n __LDBL_REDIR2_DECL (vasprintf_chk)\n __LDBL_REDIR2_DECL (obstack_printf_chk)\ndiff --git a/libio/bits/stdio2-decl.h b/libio/bits/stdio2-decl.h\nindex ada092ea..cf52c46c 100644\n--- a/libio/bits/stdio2-decl.h\n+++ b/libio/bits/stdio2-decl.h\n@@ -66,6 +66,14 @@ extern int __vdprintf_chk (int __fd, int __flag,\n \n # ifdef __USE_GNU\n \n+extern char *__aprintf_chk (int __flag,\n+\t\t\t   const char *__restrict __fmt, ...)\n+     __THROW __attribute__ ((__format__ (__printf__, 2, 3)))\n+     __attribute_malloc__;\n+extern char *__vaprintf_chk (int __flag,\n+\t\t\t    const char *__restrict __fmt, __gnuc_va_list __ap)\n+     __THROW __attribute__ ((__format__ (__printf__, 2, 0)))\n+     __attribute_malloc__;\n extern int __asprintf_chk (char **__restrict __ptr, int __flag,\n \t\t\t   const char *__restrict __fmt, ...)\n      __THROW __attribute__ ((__format__ (__printf__, 3, 4))) __wur;\ndiff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h\nindex 193494db..b9fed67e 100644\n--- a/libio/bits/stdio2.h\n+++ b/libio/bits/stdio2.h\n@@ -200,6 +200,18 @@ vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap)\n \n # ifdef __USE_GNU\n #  ifdef __va_arg_pack\n+__fortify_function char *\n+__NTH (aprintf (const char *__restrict __fmt, ...))\n+{\n+  return __aprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());\n+}\n+\n+__fortify_function char *\n+__NTH (__aprintf (const char *__restrict __fmt, ...))\n+{\n+  return __aprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());\n+}\n+\n __fortify_function int\n __NTH (asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...))\n {\n@@ -223,6 +235,26 @@ __NTH (obstack_printf (struct obstack *__restrict __obstack,\n \t\t\t       __va_arg_pack ());\n }\n #  elif __fortify_use_clang\n+__fortify_function char *\n+__NTH (aprintf (const char *__restrict __fmt, ...))\n+{\n+  __gnuc_va_list __fortify_ap;\n+  __builtin_va_start (__fortify_ap, __fmt);\n+  char * __p = __vaprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __fortify_ap);\n+  __builtin_va_end (__fortify_ap);\n+  return __p;\n+}\n+\n+__fortify_function char *\n+__NTH (__aprintf (const char *__restrict __fmt, ...))\n+{\n+  __gnuc_va_list __fortify_ap;\n+  __builtin_va_start (__fortify_ap, __fmt);\n+  char *__p = __vaprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __fortify_ap);\n+  __builtin_va_end (__fortify_ap);\n+  return __p;\n+}\n+\n __fortify_function_error_function __attribute_overloadable__ int\n __NTH (asprintf (__fortify_clang_overload_arg (char **, __restrict, __ptr),\n \t\t const char *__restrict __fmt, ...))\n@@ -260,6 +292,10 @@ __NTH (obstack_printf (__fortify_clang_overload_arg (struct obstack *,\n   return __r;\n }\n #  elif !defined __cplusplus\n+#   define aprintf(...) \\\n+  __aprintf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)\n+#   define __aprintf(...) \\\n+  __aprintf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)\n #   define asprintf(ptr, ...) \\\n   __asprintf_chk (ptr, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)\n #   define __asprintf(ptr, ...) \\\n@@ -268,6 +304,12 @@ __NTH (obstack_printf (__fortify_clang_overload_arg (struct obstack *,\n   __obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)\n #  endif\n \n+__fortify_function char *\n+__NTH (vaprintf (const char *__restrict __fmt, __gnuc_va_list __ap))\n+{\n+  return __vaprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);\n+}\n+\n __fortify_function int\n __NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt,\n \t\t  __gnuc_va_list __ap))\ndiff --git a/libio/stdio.h b/libio/stdio.h\nindex 3bf6a1f6..81d7176c 100644\n--- a/libio/stdio.h\n+++ b/libio/stdio.h\n@@ -412,6 +412,19 @@ extern int asprintf (char **__restrict __ptr,\n      __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur;\n #endif\n \n+#ifdef __USE_GNU\n+/* Write formatted output to a string dynamically allocated with `malloc'.  */\n+extern char *vaprintf (const char *__restrict __fmt, __gnuc_va_list __ap)\n+     __THROWNL __attribute__ ((__format__ (__printf__, 1, 0)))\n+     __attribute_malloc__;\n+extern char *__aprintf (const char *__restrict __fmt, ...)\n+     __THROWNL __attribute__ ((__format__ (__printf__, 1, 2)))\n+     __attribute_malloc__;\n+extern char *aprintf (const char *__restrict __fmt, ...)\n+     __THROWNL __attribute__ ((__format__ (__printf__, 1, 2)))\n+     __attribute_malloc__;\n+#endif\n+\n #ifdef __USE_XOPEN2K8\n /* Write formatted output to a file descriptor.  */\n extern int vdprintf (int __fd, const char *__restrict __fmt,\ndiff --git a/libio/tst-aprintf.c b/libio/tst-aprintf.c\nnew file mode 100644\nindex 00000000..e10eb591\n--- /dev/null\n+++ b/libio/tst-aprintf.c\n@@ -0,0 +1,57 @@\n+/* Test aprintf.\n+   Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <errno.h>\n+#include <stdlib.h>\n+#include <stdio.h>\n+#include <support/check.h>\n+#include <sys/resource.h>\n+\n+static int\n+do_test (void)\n+{\n+  char *buf;\n+\n+  /* Success */\n+  buf = aprintf (\"foo %d\", 42);\n+  TEST_COMPARE_STRING (buf, \"foo 42\");\n+  free(buf);\n+\n+  {\n+    /* Avoid -Wformat-overflow warning.  */\n+    const char *volatile format = \"%2000000000d %2000000000d\";\n+    buf = aprintf (format, 1, 2);\n+    TEST_VERIFY (buf == NULL);\n+  }\n+  if (errno != ENOMEM)\n+    TEST_COMPARE (errno, EOVERFLOW);\n+\n+  /* Force ENOMEM in the test below.  */\n+  struct rlimit rl;\n+  TEST_COMPARE (getrlimit (RLIMIT_AS, &rl), 0);\n+  rl.rlim_cur = 10 * 1024 * 1024;\n+  TEST_COMPARE (setrlimit (RLIMIT_AS, &rl), 0);\n+\n+  buf = aprintf (\"%20000000d\", 1);\n+  TEST_VERIFY (buf == NULL);\n+  TEST_COMPARE (errno, ENOMEM);\n+\n+  return 0;\n+}\n+\n+#include <support/test-driver.c>\ndiff --git a/libio/vaprintf.c b/libio/vaprintf.c\nnew file mode 100644\nindex 00000000..157f783d\n--- /dev/null\n+++ b/libio/vaprintf.c\n@@ -0,0 +1,39 @@\n+/* Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.\n+\n+   As a special exception, if you link the code in this file with\n+   files compiled with a GNU compiler to produce an executable,\n+   that does not cause the resulting executable to be covered by\n+   the GNU Lesser General Public License.  This exception does not\n+   however invalidate any other reasons why the executable file\n+   might be covered by the GNU Lesser General Public License.\n+   This exception applies to code released by its copyright holders\n+   in files containing the exception.  */\n+\n+#include <libioP.h>\n+#include <stdarg.h>\n+#include <stddef.h>\n+#include <stdio.h>\n+\n+char *\n+__vaprintf (const char *fmt, va_list ap)\n+{\n+  char *p;\n+\n+  return __vasprintf_internal (&p, fmt, ap, 0) < 0 ? NULL : p;\n+}\n+ldbl_weak_alias (__vaprintf, vaprintf)\ndiff --git a/manual/stdio.texi b/manual/stdio.texi\nindex c01feaed..e7deca78 100644\n--- a/manual/stdio.texi\n+++ b/manual/stdio.texi\n@@ -2578,6 +2578,32 @@ other systems offer this function as an async-signal-safe alternative to\n The functions in this section do formatted output and place the results\n in dynamically allocated memory.\n \n+@deftypefun {char *} aprintf (const char *@var{template}, @dots{})\n+@standards{GNU, stdio.h}\n+@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}\n+This function is similar to @code{sprintf},\n+except that it dynamically allocates a string\n+(as with @code{malloc}; @pxref{Unconstrained Allocation})\n+to hold the output,\n+instead of putting the output in a buffer you allocate in advance.\n+A successful call to @code{aprintf} returns\n+a pointer to the newly allocated string.\n+\n+Here is how to use @code{aprintf}\n+to get the same result as the @code{snprintf} example,\n+but more easily:\n+\n+@smallexample\n+/* @r{Construct a message describing the value of a variable}\n+   @r{whose name is @var{name} and whose value is @var{value}.} */\n+char *\n+make_message (char *name, char *value)\n+@{\n+  return aprintf (\"value of %s is %s\", name, value);\n+@}\n+@end smallexample\n+@end deftypefun\n+\n @deftypefun int asprintf (char **@var{ptr}, const char *@var{template}, @dots{})\n @standards{GNU, stdio.h}\n @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}\ndiff --git a/stdio-common/Makefile b/stdio-common/Makefile\nindex 21094483..9a26773e 100644\n--- a/stdio-common/Makefile\n+++ b/stdio-common/Makefile\n@@ -89,6 +89,7 @@ routines := \\\n   _fitoa_word \\\n   _itoa \\\n   _itowa \\\n+  aprintf \\\n   asprintf \\\n   ctermid \\\n   cuserid \\\n@@ -177,6 +178,7 @@ routines := \\\n \n # Exclude fortified routines from being built with _FORTIFY_SOURCE\n routines_no_fortify += \\\n+  aprintf \\\n   asprintf \\\n   dprintf \\\n   fprintf \\\ndiff --git a/stdio-common/Versions b/stdio-common/Versions\nindex 8e1cbf85..93d635ff 100644\n--- a/stdio-common/Versions\n+++ b/stdio-common/Versions\n@@ -71,6 +71,9 @@ libc {\n     __isoc23_sscanf;\n     __isoc23_vsscanf;\n   }\n+  GLIBC_2.44 {\n+    aprintf;\n+  }\n   GLIBC_PRIVATE {\n     # global variables\n     _itoa_lower_digits;\ndiff --git a/stdio-common/aprintf.c b/stdio-common/aprintf.c\nnew file mode 100644\nindex 00000000..bee49667\n--- /dev/null\n+++ b/stdio-common/aprintf.c\n@@ -0,0 +1,40 @@\n+/* Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <stdarg.h>\n+#include <libioP.h>\n+\n+/* Write formatted output from FORMAT to a string which is\n+   allocated with malloc.  */\n+/* VARARGS1 */\n+char *\n+___aprintf (const char *fmt, ...)\n+{\n+  char *p;\n+  va_list ap;\n+\n+  va_start (ap, fmt);\n+  if (__vasprintf_internal (&p, fmt, ap, 0) < 0)\n+    p = NULL;\n+  va_end (ap);\n+\n+  return p;\n+}\n+ldbl_hidden_def (___aprintf, __aprintf)\n+\n+ldbl_strong_alias (___aprintf, __aprintf)\n+ldbl_weak_alias (___aprintf, aprintf)\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile\nindex 10ae73db..e0989a51 100644\n--- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile\n@@ -5,6 +5,7 @@ ldbl-extra-routines += fwscanf \\\n \t\t       swscanf \\\n \t\t       swprintf \\\n \t\t       wscanf \\\n+\t\t       vaprintf \\\n \t\t       vasprintf \\\n \t\t       vdprintf \\\n \t\t       vscanf \\\n@@ -40,6 +41,7 @@ endif\n \n ifeq ($(subdir),stdio-common)\n ldbl-extra-routines += printf_size \\\n+\t\t       aprintf \\\n \t\t       asprintf \\\n \t\t       dprintf \\\n \t\t       fprintf \\\n@@ -250,12 +252,14 @@ $(objpfx)test-printf-size-ibm128.out: \\\n endif\n \n ifeq ($(subdir),debug)\n-ldbl-extra-routines += asprintf_chk \\\n+ldbl-extra-routines += aprintf_chk \\\n+\t\t       asprintf_chk \\\n \t\t       dprintf_chk \\\n \t\t       fprintf_chk \\\n \t\t       printf_chk \\\n \t\t       snprintf_chk \\\n \t\t       sprintf_chk \\\n+\t\t       vaprintf_chk \\\n \t\t       vasprintf_chk \\\n \t\t       vdprintf_chk \\\n \t\t       vfprintf_chk \\\n@@ -480,6 +484,7 @@ endif\n routines += $(foreach r,$(ldbl-extra-routines),ieee128-$(r))\n \n routines_no_fortify += \\\n+  ieee128-aprintf \\\n   ieee128-asprintf \\\n   ieee128-dprintf \\\n   ieee128-fprintf \\\n@@ -490,6 +495,7 @@ routines_no_fortify += \\\n   ieee128-sprintf \\\n   ieee128-swprintf \\\n   ieee128-syslog \\\n+  ieee128-vaprintf \\\n   ieee128-vasprintf \\\n   ieee128-vdprintf \\\n   ieee128-vfprintf \\\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions\nindex 00c0b445..ae341658 100644\n--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions\n@@ -301,4 +301,10 @@ libc {\n     __isoc23_vswscanfieee128;\n     __isoc23_vwscanfieee128;\n   }\n+  GLIBC_2.44 {\n+    __aprintfieee128;\n+    __vaprintfieee128;\n+    __aprintf_chkieee128;\n+    __vaprintf_chkieee128;\n+  }\n }\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c\nnew file mode 100644\nindex 00000000..041ebc01\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf.c\n@@ -0,0 +1,36 @@\n+/* Wrapper for aprintf.  IEEE128 version.\n+   Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <stdarg.h>\n+#include <libio/libioP.h>\n+\n+extern char *\n+___ieee128___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_USES_FLOAT128) < 0)\n+    p = NULL;\n+  va_end (ap);\n+\n+  return p;\n+}\n+hidden_def (___ieee128___aprintf)\n+strong_alias (___ieee128___aprintf, __aprintfieee128)\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf_chk.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf_chk.c\nnew file mode 100644\nindex 00000000..0e1e395d\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-aprintf_chk.c\n@@ -0,0 +1,40 @@\n+/* Wrapper for __aprintf_chk.  IEEE128 version.\n+   Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <stdarg.h>\n+#include <libio/libioP.h>\n+\n+extern char *\n+___ieee128___aprintf_chk (int flag, const char *fmt, ...)\n+{\n+  va_list ap;\n+  char *p;\n+\n+  unsigned int mode = PRINTF_LDBL_USES_FLOAT128;\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+hidden_def (___ieee128___aprintf_chk)\n+strong_alias (___ieee128___aprintf_chk, __aprintf_chkieee128)\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf.c\nnew file mode 100644\nindex 00000000..6157f306\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf.c\n@@ -0,0 +1,29 @@\n+/* Wrapper for vaprintf.  IEEE128 version.\n+   Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <libio/libioP.h>\n+\n+extern char *\n+___ieee128_vaprintf (const char *fmt, va_list ap)\n+{\n+  char *p;\n+  if (__vasprintf_internal (&p, fmt, ap, PRINTF_LDBL_USES_FLOAT128) < 0)\n+    p = NULL;\n+  return p;\n+}\n+strong_alias (___ieee128_vaprintf, __vaprintfieee128)\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c\nnew file mode 100644\nindex 00000000..4fd0ca8c\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vaprintf_chk.c\n@@ -0,0 +1,31 @@\n+/* Wrapper for __vaprintf_chk.  IEEE128 version.\n+   Copyright (C) 2026 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <https://www.gnu.org/licenses/>.  */\n+\n+#include <libio/libioP.h>\n+\n+extern char *\n+___ieee128___vaprintf_chk (int flag, const char *fmt, va_list ap)\n+{\n+  char *p;\n+  unsigned int mode = PRINTF_LDBL_USES_FLOAT128;\n+  if (flag > 0)\n+    mode |= PRINTF_FORTIFY;\n+\n+  return __vasprintf_internal (&p, fmt, ap, mode) < 0 ? NULL : p;\n+}\n+strong_alias (___ieee128___vaprintf_chk, __vaprintf_chkieee128)\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c\nindex 597e782e..92cdafd3 100644\n--- a/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c\n@@ -29,12 +29,24 @@\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@@ -86,11 +98,21 @@ 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@@ -153,30 +175,35 @@ 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\"\ndiff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c\nindex e762e962..7629ee7b 100644\n--- a/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c\n+++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c\n@@ -27,12 +27,24 @@\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@@ -81,11 +93,21 @@ 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@@ -146,30 +168,35 @@ 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\"\ndiff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile\nindex ef7da1f8..3effc4ef 100644\n--- a/sysdeps/ieee754/ldbl-opt/Makefile\n+++ b/sysdeps/ieee754/ldbl-opt/Makefile\n@@ -15,6 +15,8 @@ libnldbl-calls = \\\n   acos \\\n   acosh \\\n   acospi \\\n+  aprintf \\\n+  aprintf_chk \\\n   asin \\\n   asinh \\\n   asinpi \\\n@@ -223,6 +225,8 @@ libnldbl-calls = \\\n   trunc \\\n   ufromfp \\\n   ufromfpx \\\n+  vaprintf \\\n+  vaprintf_chk \\\n   vasprintf \\\n   vasprintf_chk \\\n   vdprintf \\\n@@ -556,6 +560,7 @@ CFLAGS-tst-nldbl-wscanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \\\n endif\n \n routines_no_fortify += \\\n+  nldbl-aprintf \\\n   nldbl-asprintf \\\n   nldbl-dprintf \\\n   nldbl-fprintf \\\n@@ -567,6 +572,7 @@ routines_no_fortify += \\\n   nldbl-sprintf \\\n   nldbl-swprintf \\\n   nldbl-syslog \\\n+  nldbl-vaprintf \\\n   nldbl-vasprintf \\\n   nldbl-vdprintf \\\n   nldbl-vfprintf \\\ndiff --git a/sysdeps/ieee754/ldbl-opt/Versions b/sysdeps/ieee754/ldbl-opt/Versions\nindex 5345f1c6..f7dec42d 100644\n--- a/sysdeps/ieee754/ldbl-opt/Versions\n+++ b/sysdeps/ieee754/ldbl-opt/Versions\n@@ -98,6 +98,16 @@ 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 {\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c b/sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c\nnew file mode 100644\nindex 00000000..fe250c03\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-aprintf.c\n@@ -0,0 +1,17 @@\n+#include \"nldbl-compat.h\"\n+\n+attribute_hidden\n+char *\n+__aprintf (const char *fmt, ...)\n+{\n+  va_list ap;\n+  char *p;\n+\n+  va_start (ap, fmt);\n+  p = __nldbl_vaprintf (fmt, ap);\n+  va_end (ap);\n+\n+  return p;\n+}\n+extern __typeof (__aprintf) aprintf attribute_hidden;\n+weak_alias (__aprintf, aprintf)\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c b/sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c\nnew file mode 100644\nindex 00000000..77b1d221\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-aprintf_chk.c\n@@ -0,0 +1,15 @@\n+#include \"nldbl-compat.h\"\n+\n+attribute_hidden\n+char *\n+__aprintf_chk (int flag, const char *fmt, ...)\n+{\n+  va_list ap;\n+  char *p;\n+\n+  va_start (ap, fmt);\n+  p = __nldbl___vaprintf_chk (flag, fmt, ap);\n+  va_end (ap);\n+\n+  return p;\n+}\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\nindex dcd56492..d5a09f74 100644\n--- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.c\n@@ -55,6 +55,22 @@ 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@@ -208,6 +224,14 @@ __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@@ -649,6 +673,36 @@ __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@@ -1336,3 +1390,8 @@ 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\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h\nindex f2217789..9da1c2d2 100644\n--- a/sysdeps/ieee754/ldbl-opt/nldbl-compat.h\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-compat.h\n@@ -46,6 +46,7 @@ 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@@ -57,6 +58,8 @@ 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@@ -126,6 +129,8 @@ 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);\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c b/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c\nnew file mode 100644\nindex 00000000..6ba7789c\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf.c\n@@ -0,0 +1,9 @@\n+#include \"nldbl-compat.h\"\n+\n+attribute_hidden\n+weak_function\n+char *\n+vaprintf (const char *fmt, va_list ap)\n+{\n+  return __nldbl_vaprintf (fmt, ap);\n+}\ndiff --git a/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c b/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c\nnew file mode 100644\nindex 00000000..72e4fca7\n--- /dev/null\n+++ b/sysdeps/ieee754/ldbl-opt/nldbl-vaprintf_chk.c\n@@ -0,0 +1,8 @@\n+#include \"nldbl-compat.h\"\n+\n+attribute_hidden\n+char *\n+__vaprintf_chk (int flag, const char *fmt, va_list ap)\n+{\n+  return __nldbl___vaprintf_chk (flag, fmt, ap);\n+}\ndiff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist\nindex 08dcd85c..bba34658 100644\n--- a/sysdeps/mach/hurd/i386/libc.abilist\n+++ b/sysdeps/mach/hurd/i386/libc.abilist\n@@ -2760,6 +2760,11 @@ 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\ndiff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist\nindex c17d5399..19d193cd 100644\n--- a/sysdeps/mach/hurd/x86_64/libc.abilist\n+++ b/sysdeps/mach/hurd/x86_64/libc.abilist\n@@ -2437,6 +2437,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist\nindex 3156688a..1dfc4868 100644\n--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist\n@@ -2775,3 +2775,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist\nindex 8af5b0b5..bd8456cb 100644\n--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist\n@@ -3122,6 +3122,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist\nindex 35fcef2c..cc608a70 100644\n--- a/sysdeps/unix/sysv/linux/arc/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist\n@@ -2536,3 +2536,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist\nindex a6c6b951..8bb4c76c 100644\n--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist\n@@ -2828,6 +2828,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist\nindex e76015fe..84ce598d 100644\n--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist\n@@ -2825,6 +2825,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist\nindex 1fb7cdca..a431ad7d 100644\n--- a/sysdeps/unix/sysv/linux/csky/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist\n@@ -2812,3 +2812,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist\nindex 0710ccec..cec2ae38 100644\n--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist\n@@ -2849,6 +2849,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist\nindex 3afe3a88..443b553c 100644\n--- a/sysdeps/unix/sysv/linux/i386/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist\n@@ -3032,6 +3032,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist\nindex c2b3a66d..69119490 100644\n--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist\n@@ -2296,3 +2296,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist\nindex d6855131..b57426de 100644\n--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist\n@@ -2808,6 +2808,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist\nindex 4e3fe9c4..d0630627 100644\n--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist\n@@ -2975,6 +2975,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist\nindex 29f0c5f9..cf9b9fee 100644\n--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist\n@@ -2861,3 +2861,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist\nindex 2ef62838..5699f65a 100644\n--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist\n@@ -2858,3 +2858,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist\nindex 031e8961..3dd79859 100644\n--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist\n@@ -2938,6 +2938,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist\nindex 8dc99d81..4acff6b7 100644\n--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist\n@@ -2936,6 +2936,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist\nindex 054c5b63..c0ae4197 100644\n--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist\n@@ -2944,6 +2944,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist\nindex 13f0148b..63c62110 100644\n--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist\n@@ -2846,6 +2846,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist\nindex e7ffe07d..a3b89d62 100644\n--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist\n@@ -2286,3 +2286,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist\nindex dea4b20f..fa44aa46 100644\n--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist\n@@ -3165,6 +3165,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist\nindex b45e1274..5657ea76 100644\n--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist\n@@ -3210,6 +3210,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist\nindex 942cf6a0..233c5f0b 100644\n--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist\n@@ -2919,6 +2919,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist\nindex 65d78e50..c48eb3ed 100644\n--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist\n@@ -2995,3 +2995,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist\nindex dcab30d7..ae677eb8 100644\n--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist\n@@ -2539,3 +2539,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist\nindex 796ef35e..734e5409 100644\n--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist\n@@ -2739,3 +2739,8 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist\nindex 9bd9f5eb..2ca245ba 100644\n--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist\n@@ -3163,6 +3163,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist\nindex 8f2350ee..f6f9c998 100644\n--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist\n@@ -2956,6 +2956,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist\nindex 7aa98c5a..100b5de7 100644\n--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist\n@@ -2855,6 +2855,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist\nindex 6bd4f8f6..f16c9e83 100644\n--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist\n@@ -2852,6 +2852,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist\nindex b52cab2a..fa79c7b9 100644\n--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist\n@@ -3186,6 +3186,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist\nindex ff99cd4f..becd745b 100644\n--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist\n@@ -2822,6 +2822,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist\nindex 306cd627..a3fefbc5 100644\n--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist\n@@ -2771,6 +2771,11 @@ 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\ndiff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist\nindex 8b9c4487..659654d9 100644\n--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist\n+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist\n@@ -2790,3 +2790,8 @@ 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",
    "prefixes": [
        "1/3"
    ]
}