Message ID | 1477003405.8523.21.camel@caviumnetworks.com |
---|---|
State | New |
Headers | show |
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);
On Tue, 1 Nov 2016, Steve Ellcey wrote: > 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. OK provided you've tested that this change works with older GCC that lack the new option (otherwise it would need to be conditional on the GCC version).
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);