This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] mention disabling GCC built-ins for customization
- From: Martin Sebor <msebor at gmail dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Wed, 13 Jun 2018 12:19:00 -0600
- Subject: [PATCH] mention disabling GCC built-ins for customization
The GCC sprintf optimization introduced in GCC 7 relies on
the conformance of the library implementation of formatted
I/O functions. When a sprintf customization changes
the effects of the function in a way that's observable by
a strictly conforming program it might interfere with
the optimization.
Since this may not be obvious to users the attached patch
adds a couple of sentences to the manual to make it clear
that the sprintf built-in handling needs to be disabled
when customizing the function.
Martin
ChangeLog:
* manual/stdio.texi (Customizing printf): Add a note to disable
built-in handling.
diff --git a/manual/stdio.texi b/manual/stdio.texi
index 38be236..d945955 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -2963,7 +2963,11 @@ The facilities of this section are declared in the header file
@strong{Portability Note:} The ability to extend the syntax of
@code{printf} template strings is a GNU extension. ISO standard C has
-nothing similar.
+nothing similar. When using the GNU C compiler or any other compiler
+that interprets calls to standard I/O functions according to the rules
+of the language standard it is necessary to disable such handling by
+the appropriate compiler option. Otherwise the behavior of a program
+that relies on the extension is undefined.
@node Registering New Conversions
@subsection Registering New Conversions