Cirrus CI is broken on FreeBSD 13.3 due to clang version update.
It now complains about snprintf truncation the same way GCC does:

  tests/test-util.c:1129:16: error: 'snprintf' will always be truncated;
          specified size is 5, but format string expands to at least 6
          [-Werror,-Wformat-truncation]

  1129 |     ovs_assert(snprintf(s, 5, "abcde") == 5);
       |                ^

Clang 17 on FreeBSD 14.0 works fine, but new Clang 18.1.4 on 13.3
fails to build.

Fix that by disabling Clang diagnostic the same way as we do for GCC.

Unfortunately, the pragma's are compiler-specific, so cannot be
combined, AFAIK.

Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
---
 tests/test-util.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/tests/test-util.c b/tests/test-util.c
index 7d899fbbf..5d88d38f2 100644
--- a/tests/test-util.c
+++ b/tests/test-util.c
@@ -1116,12 +1116,16 @@ test_snprintf(struct ovs_cmdl_context *ctx OVS_UNUSED)
 {
     char s[16];
 
+    /* GCC 7+ and Clang 18+ warn about the following calls that truncate
+     * a string using snprintf().  We're testing that truncation works
+     * properly, so temporarily disable the warning. */
 #if __GNUC__ >= 7
-    /* GCC 7+ warns about the following calls that truncate a string using
-     * snprintf().  We're testing that truncation works properly, so
-     * temporarily disable the warning. */
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wformat-truncation"
+#endif
+#if __clang_major__ >= 18
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-truncation"
 #endif
     ovs_assert(snprintf(s, 4, "abcde") == 5);
     ovs_assert(!strcmp(s, "abc"));
@@ -1130,6 +1134,9 @@ test_snprintf(struct ovs_cmdl_context *ctx OVS_UNUSED)
     ovs_assert(!strcmp(s, "abcd"));
 #if __GNUC__ >= 7
 #pragma GCC diagnostic pop
+#endif
+#if __clang_major__ >= 18
+#pragma clang diagnostic pop
 #endif
 
     ovs_assert(snprintf(s, 6, "abcde") == 5);
-- 
2.44.0

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to