summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/compiler.h4
-rw-r--r--include/str.h2
-rw-r--r--include/system/string.h6
3 files changed, 11 insertions, 1 deletions
diff --git a/include/compiler.h b/include/compiler.h
index 40358a11..18576724 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -18,7 +18,11 @@
# define RETURNS_NONNULL
#else
# define NONNULL(first, args...) __attribute__((__nonnull__(first, ## args)))
+#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)))
# define RETURNS_NONNULL __attribute__((__returns_nonnull__))
+#else
+# define RETURNS_NONNULL
+#endif
#endif
#ifndef UNUSED
diff --git a/include/str.h b/include/str.h
index 189aceff..d433e6ec 100644
--- a/include/str.h
+++ b/include/str.h
@@ -3,11 +3,13 @@
#ifndef SHIM_STR_H
#define SHIM_STR_H
+#if __GNUC__ > 6
#ifdef SHIM_UNIT_TEST
#pragma GCC diagnostic error "-Wnonnull-compare"
#else
#pragma GCC diagnostic ignored "-Wnonnull-compare"
#endif
+#endif
static inline UNUSED RETURNS_NONNULL NONNULL(1)
char *
diff --git a/include/system/string.h b/include/system/string.h
index 66e7d93e..2b366df7 100644
--- a/include/system/string.h
+++ b/include/system/string.h
@@ -64,7 +64,11 @@ mkbi3_(int, strncasecmp, const char *, s1, const char *, s2, size_t, n)
mkbi3_(char *, strncat, char *, dest, const char *, src, size_t, n)
mkbi3_(int, strncmp, const char *, s1, const char *, s2, size_t, n)
mkbi3_(char *, strncpy, char *, dest, const char *, src, size_t, n)
-mkbi2_(int, strnlen, const char *, s1, size_t, n)
+#if defined(__GNUC__) && __GNUC__ >= 9
+mkbi2_(size_t, strnlen, const char *, s1, size_t, n)
+#else
+size_t strnlen(const char * s1, size_t n);
+#endif
mkdepbi2_(char *, strpbrk, const char *, s, const char *, accept)
mkdepbi2_(char *, strrchr, const char *, s, int, c)
mkdepbi2_(size_t, strspn, const char *, s, const char *, accept)