]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: enable -Warray-bounds and -fstrict-flex-arrays
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 5 Feb 2023 19:44:19 +0000 (20:44 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 6 Feb 2023 11:09:55 +0000 (12:09 +0100)
-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.

meson.build

index 97246a3c6fad044386279e302c39e4ed6e139c77..d1e39c8a5a70652fe5e76e0abdc8ba96038f3844 100644 (file)
@@ -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')