git: bb4de3d2cf88 - stable/13 - cdefs.h: Introduce __nonstring attribute
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 29 Dec 2025 12:00:22 UTC
The branch stable/13 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=bb4de3d2cf88c2e407c2d0ffd9542377f7b0049c
commit bb4de3d2cf88c2e407c2d0ffd9542377f7b0049c
Author: Alex Richardson <arichardson@FreeBSD.org>
AuthorDate: 2025-12-16 18:03:44 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2025-12-29 11:58:35 +0000
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
(cherry picked from commit 802c6d5d61d15494a54a386dc2ffbcfefc68c8ab)
---
sys/sys/cdefs.h | 7 +++++++
tools/build/cross-build/include/common/sys/cdefs.h | 8 ++++++++
2 files changed, 15 insertions(+)
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index fbd3c3144596..8fd07ce85a05 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -559,6 +559,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
+
#if defined(__GNUC__)
#define __strong_reference(sym,aliassym) \
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
diff --git a/tools/build/cross-build/include/common/sys/cdefs.h b/tools/build/cross-build/include/common/sys/cdefs.h
index 3fa7790841cc..f4dfb1c3fe27 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