On 03/05/2018 01:54 PM, Martin Sebor wrote:
> Attribute nonstring is currently only allowed on arrays and
> pointers to plain char, but -Wstringop-truncation triggers
> even for strncpy calls whose arguments are arrays of signed
> or unsigned char (with or without a cast to char*).
> 
> To help deal with -Wstringop-truncation in the Linux kernel
> it was suggested to me that it would be useful to be able
> to make use of the attribute on all three narrow char types.
> Apparently, there are enough calls to strncpy in the Linux
> kernel with arguments of the other char types that trigger
> the new warning, and the warning is considered sufficiently
> useful that making use of the attribute to suppress
> the warning rather than changing it ignore the other
> two char types is preferable.
> 
> The attached patch relaxes the restriction and lets GCC
> accept attribute nonstring on all three narrow character
> types as well as their qualified forms.
> 
> Tested on x86_64-linux.
> 
> Martin
> 
> gcc-84725.diff
> 
> 
> PR tree-optimization/84725 - enable attribute nonstring for all narrow 
> character types
> 
> gcc/c-family/ChangeLog:
> 
>       PR tree-optimization/84725
>       * c-attribs.c (handle_nonstring_attribute): Allow attribute nonstring
>       with all three narrow character types, including their qualified forms.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR tree-optimization/84725
>       * c-c++-common/Wstringop-truncation-4.c: New test.
>       * c-c++-common/attr-nonstring-5.c: New test.
While it's not a regression, I think getting this warning to a point
where it's usable by the linux kernel is a notable win.  So I'm going to
ACK it as an exception to the regression bugfixes only policy.

jeff

Reply via email to