[RFC v3 0/2] Add [v]aprintf(3)
Alejandro Colomar
alx@kernel.org
Wed Mar 18 18:49:15 GMT 2026
Hi Joseph,
On 2026-03-18T18:27:05+0000, Joseph Myers wrote:
> On Wed, 18 Mar 2026, Alejandro Colomar wrote:
>
> > I still need to do the long double variants, as Joseph said. Joseph
> > would you mind pointing me to what I should do about it and how?
>
> Pick some existing printf-like function, find all the references to it and
> its variants in the source tree and use that as a basis for what needs
> adding for any new such function.
Thanks!
In file names, I see:
$ find | grep asprintf | grep -v -e xasprintf -e^./patches/
./sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c
./sysdeps/ieee754/ldbl-opt/nldbl-vasprintf_chk.c
./sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c
./sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c
./sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf_chk.c
./sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf.c
./sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vasprintf.c
./sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf_chk.c
./stdio-common/asprintf.c
./debug/asprintf_chk.c
./debug/vasprintf_chk.c
./libio/tst-asprintf-null.c
./libio/vasprintf.c
I already did the libio/ and stdio-common/ part. It seems I still need
debug/ and sysdeps/.
$ find | grep aprintf | grep -v ^./patches/
./stdio-common/aprintf.c
./libio/tst-aprintf.c
./libio/vaprintf.c
What's the difference between ___asprintf_chk() with 3 '_' and
__asprintf_chk() with 2 '_'?
Then, grepping for mentions within code, and ignoring calls, and other
irrelevant stuff, I have a longer list.
$ grep -rl '\b_*asprintf' \
| sort \
| grep -v \
-e^time/ -e^support/ -e^sunrpc/ -e^string/ \
-e^stdio-common/tst- -e^resolv/ -e^posix/tst- \
-e^patches/ -e^nss/ -e^nscd/ -e^nis/ -e^misc/ -e^math/ \
-e^manual/ -e^malloc/ -e^login/ -e^locale/ -e^io/ \
-e^intl/ -e^inet/ -e^iconv/ -e^elf/ -e^dlfcn/ \
-e^dirent/ -e^catgets/ -e^benchtests/ -e^assert/ \
-e^ChangeLog -e^NEWS \
| grep -v \
-e^libio/ -e^stdio-common/ -e^include/
debug/Makefile
debug/Versions
debug/asprintf_chk.c
debug/pcprofiledump.c
debug/tst-fortify.c
sysdeps/ieee754/ldbl-128ibm-compat/Makefile
sysdeps/ieee754/ldbl-128ibm-compat/Versions
sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf.c
sysdeps/ieee754/ldbl-128ibm-compat/ieee128-asprintf_chk.c
sysdeps/ieee754/ldbl-128ibm-compat/test-printf-chk-ldbl-compat.c
sysdeps/ieee754/ldbl-128ibm-compat/test-printf-ldbl-compat.c
sysdeps/ieee754/ldbl-opt/Makefile
sysdeps/ieee754/ldbl-opt/Versions
sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c
sysdeps/ieee754/ldbl-opt/nldbl-asprintf_chk.c
sysdeps/ieee754/ldbl-opt/nldbl-compat.c
sysdeps/ieee754/ldbl-opt/nldbl-compat.h
sysdeps/mach/hurd/execveat.c
sysdeps/mach/hurd/i386/libc.abilist
sysdeps/mach/hurd/spawni.c
sysdeps/mach/hurd/x86_64/libc.abilist
sysdeps/mach/strerror_l.c
sysdeps/unix/sysv/linux/aarch64/libc.abilist
sysdeps/unix/sysv/linux/alpha/libc.abilist
sysdeps/unix/sysv/linux/arc/libc.abilist
sysdeps/unix/sysv/linux/arm/be/libc.abilist
sysdeps/unix/sysv/linux/arm/le/libc.abilist
sysdeps/unix/sysv/linux/csky/libc.abilist
sysdeps/unix/sysv/linux/hppa/libc.abilist
sysdeps/unix/sysv/linux/i386/libc.abilist
sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
sysdeps/unix/sysv/linux/or1k/libc.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
sysdeps/unix/sysv/linux/sh/be/libc.abilist
sysdeps/unix/sysv/linux/sh/le/libc.abilist
sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
Of this, list, is it all necessary? And is it all manually updated?
Or is part of it automated? And if so, which part should I ignore?
Have a lovely night!
Alex
--
<https://www.alejandro-colomar.es>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20260318/f8338d60/attachment.sig>
More information about the Libc-alpha
mailing list