[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