aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2025-12-16 18:03:44 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2025-12-16 20:21:45 +0000
commit802c6d5d61d15494a54a386dc2ffbcfefc68c8ab (patch)
tree05a1b9de84ddb3d5914e51c081388d9cb4b25ba6
parentce9557d4ee174267504a63b2c8f6009be27368c9 (diff)
cdefs.h: Introduce __nonstring attribute
This attribute can be used to annotate char arrays that are not supposed to be terminated with a NUL char and is needed to silence clang's new -Wunterminated-string-initialization warning. The name matches linuxkpi. Reviewed by: emaste, jhb MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D52565
-rw-r--r--sys/sys/cdefs.h7
-rw-r--r--tools/build/cross-build/include/common/sys/cdefs.h8
2 files changed, 15 insertions, 0 deletions
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index 3bc4389346d2..ea6a92ad0056 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -394,6 +394,13 @@
#define __printf0like(fmtarg, firstvararg)
#endif
+/* To silence warnings about null terminator not fitting into an array. */
+#if __has_attribute(__nonstring__)
+#define __nonstring __attribute__((__nonstring__))
+#else
+#define __nonstring
+#endif
+
#define __strong_reference(sym,aliassym) \
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
#ifdef __STDC__
diff --git a/tools/build/cross-build/include/common/sys/cdefs.h b/tools/build/cross-build/include/common/sys/cdefs.h
index faad5eccb3af..c7e453394478 100644
--- a/tools/build/cross-build/include/common/sys/cdefs.h
+++ b/tools/build/cross-build/include/common/sys/cdefs.h
@@ -100,6 +100,14 @@
__attribute__((__format__(__printf0__, fmtarg, firstvararg)))
#endif
+#ifndef __nonstring
+#if __has_attribute(__nonstring__)
+#define __nonstring __attribute__((__nonstring__))
+#else
+#define __nonstring
+#endif
+#endif
+
#ifndef __predict_true
#define __predict_true(exp) __builtin_expect((exp), 1)
#endif