This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Fix warning from latest GCC in tst-printf.c
- From: Steve Ellcey <sellcey at caviumnetworks dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Tue, 1 Nov 2016 10:21:31 -0700
- Subject: Re: [PATCH] Fix warning from latest GCC in tst-printf.c
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Steve dot Ellcey at cavium dot com;
- References: <1477003405.8523.21.camel@caviumnetworks.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
Ping. One of the snprintf statements in this test is using a %.999999u
format so it is obvious that the test wants to test formats that would
go beyond the limit of the snprintf buffer and so we should ignore the
warnings in this test.
Steve Ellcey
sellcey@caviumnetworks.com
On Thu, 2016-10-20 at 15:43 -0700, Steve Ellcey wrote:
> GCC 7.0 (prerelease) adds a a new warning, -Wformat-length, if it
> thinks an snprintf call may go beyond the end of the buffer length
> being written to. This warning is an approximation since GCC may not
> know how many characters a '%d' format will expand to, but it makes a
> worse case guess and warns if that would take the print beyond the
> buffer length.
>
> Here is a fix for one GLIBC test that fails to compile due to this
> warning. I think we want to ignore the warning in this case and not
> increase the buffer size because I believe the test is intentionally
> trying to go beyond the buffer limit.
>
> The warnings are coming from the snprintf statements at line 225 and
> 228 of the original stdio-common/tst-printf.c and I could do a push
> and
> pop of the warning down at those lines but I thought it made more
> sense
> to put it up with the other DIAG_IGNORE.
>
> OK to checkin?
>
> Steve Ellcey
> sellcey@caviumnetworks.com
>
>
> 2016-10-20 Steve Ellcey <sellcey@caviumnetworks.com>
>
> * stdio-common/tst-printf.c: Ignore -Wformat-length warning.
>
>
> diff --git a/stdio-common/tst-printf.c b/stdio-common/tst-printf.c
> index 2896b18..1ae1eea 100644
> --- a/stdio-common/tst-printf.c
> +++ b/stdio-common/tst-printf.c
> @@ -32,6 +32,9 @@
> The compiler warnings are not useful here. */
> DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
>
> +/* Compiler warnings about format lengths should also be
> ignored. */
> +DIAG_IGNORE_NEEDS_COMMENT (7.0, "-Wformat-length");
> +
> static void rfg1 (void);
> static void rfg2 (void);
> static void rfg3 (void);