From: Zbigniew Jędrzejewski-Szmek Date: Sun, 5 Feb 2023 19:44:19 +0000 (+0100) Subject: meson: enable -Warray-bounds and -fstrict-flex-arrays X-Git-Tag: v253-rc3~38^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc5688375c76a1e367ddb1f5b51603f1f2b4d081;p=thirdparty%2Fsystemd.git meson: enable -Warray-bounds and -fstrict-flex-arrays -fstrict-flex-arrays means that the compiler doesn't have to assume that any trailing array is a flex array. I.e. unless the array is declared without a specified size, only indices in the declared range are valid. -Warray-bounds turns on the warnings about out-of-bounds array accesses. -Warray-bounds=2 does some more warnings, with higher false positive rate. But it doesn't seem to yield any false positives in our codebase, so enable it. clang supports -Warray-bounds, but not -Warray-bounds=2. gcc supports both. gcc-13 supports -fstrict-flex-arrays. See https://people.kernel.org/kees/bounded-flexible-arrays-in-c for a long discussion of use in the kernel. --- diff --git a/meson.build b/meson.build index 97246a3c6fa..d1e39c8a5a7 100644 --- a/meson.build +++ b/meson.build @@ -354,6 +354,8 @@ basic_disabled_warnings = [ ] possible_common_cc_flags = [ + '-Warray-bounds', # clang + '-Warray-bounds=2', '-Wdate-time', '-Wendif-labels', '-Werror=format=2', @@ -391,6 +393,8 @@ possible_common_cc_flags = [ # negative arguments are correctly detected starting with meson 0.46. '-Wno-error=#warnings', # clang '-Wno-string-plus-int', # clang + + '-fstrict-flex-arrays', ] c_args = get_option('c_args')