[PATCH 1/2] Detect nonstring attribute via __has_attribute

Jussi Kivilinna jussi.kivilinna at iki.fi
Thu Jul 23 13:32:03 CEST 2026


* src/gcrypt.h.in (_GCRY_GCC_ATTR_NONSTRING): Detect with
__has_attribute instead of GCC version check.
--

Clang reports __GNUC__ as 4, so _GCRY_GCC_VERSION >= 80000 check never
enabled nonstring attribute there, and clang 21 warns about unterminated
string initialization in byte arrays. Probe the attribute with
__has_attribute, which works on both GCC and clang regardless of
reported version.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
 src/gcrypt.h.in | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in
index 8867b4e6..bb6f340d 100644
--- a/src/gcrypt.h.in
+++ b/src/gcrypt.h.in
@@ -98,8 +98,10 @@ extern "C" {
 #define _GCRY_GCC_ATTR_SENTINEL(a) __attribute__ ((sentinel(a)))
 #endif
 
-#if _GCRY_GCC_VERSION >= 80000
-#define _GCRY_GCC_ATTR_NONSTRING __attribute__((__nonstring__))
+#if defined __has_attribute
+#  if __has_attribute (__nonstring__)
+#    define _GCRY_GCC_ATTR_NONSTRING __attribute__((__nonstring__))
+#  endif
 #endif
 
 #endif /*__GNUC__*/
-- 
2.53.0




More information about the Gcrypt-devel mailing list