> On Dec 1, 2022, at 11:42 AM, Kees Cook <keesc...@chromium.org> wrote: > > On Wed, Nov 30, 2022 at 02:25:56PM +0000, Qing Zhao wrote: >> '-Wstrict-flex-arrays' >> Warn about inproper usages of flexible array members according to >> the LEVEL of the 'strict_flex_array (LEVEL)' attribute attached to >> the trailing array field of a structure if it's available, >> otherwise according to the LEVEL of the option >> '-fstrict-flex-arrays=LEVEL'. >> >> This option is effective only when LEVEL is bigger than 0. >> Otherwise, it will be ignored with a warning. >> >> when LEVEL=1, warnings will be issued for a trailing array >> reference of a structure that have 2 or more elements if the >> trailing array is referenced as a flexible array member. >> >> when LEVEL=2, in addition to LEVEL=1, additional warnings will be >> issued for a trailing one-element array reference of a structure if >> the array is referenced as a flexible array member. >> >> when LEVEL=3, in addition to LEVEL=2, additional warnings will be >> issued for a trailing zero-length array reference of a structure if >> the array is referenced as a flexible array member. >> >> At the same time, -Warray-bounds is updated: > > Why is there both -Wstrict-flex-arrays and -Warray-bounds? I thought > only the latter was going to exist?
Yes, It’s very easy to merge these two warnings into one: -Warray-bounds, when combined with -fstrict-flex-arrays, in addition to report all the out-of-bounds warnings, it also report the misuse of flexible array members according to the LEVEL of -fstrict-flex-arrays The major question is, do we need one separate warning option to report the misuse of flexible array member only? If so, then we need to add a new one. > > Are you trying to split code gen (-fstrict-flex-arrays) from warnings? No. After this patch, the -fstrict-flex-arrays will consistently control code gens and warnings in GCC except the default behavior without -fstrict-flex-arrays: For code gen, the default behavior is treating all trailing arrays as FAM; For warnings, the default behavior is treating [], [0],[1] trailing arrays as FAM; [n] is not treated as FAM. Qing > Is that needed? > > -- > Kees Cook