From 8387df1551f18b90b3936c7cbb311416c3db8032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Sat, 4 Feb 2023 17:34:08 +0100 Subject: Annotate functions with access attribute Supported by GCC since version 10. --- Macros.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'Macros.h') diff --git a/Macros.h b/Macros.h index 5e8891a4..0f95347b 100644 --- a/Macros.h +++ b/Macros.h @@ -61,6 +61,27 @@ #endif /* HAVE_ATTR_ALLOC_SIZE */ +#ifdef HAVE_ATTR_ACCESS + +#define ATTR_ACCESS2(mode, ref) __attribute__((access (mode, ref))) +#define ATTR_ACCESS3(mode, ref, size) __attribute__((access (mode, ref, size))) + +#else + +#define ATTR_ACCESS2(mode, ref) +#define ATTR_ACCESS3(mode, ref, size) + +#endif /* HAVE_ATTR_ACCESS */ + +#define ATTR_ACCESS2_R(ref) ATTR_ACCESS2(read_only, ref) +#define ATTR_ACCESS3_R(ref, size) ATTR_ACCESS3(read_only, ref, size) + +#define ATTR_ACCESS2_RW(ref) ATTR_ACCESS2(read_write, ref) +#define ATTR_ACCESS3_RW(ref, size) ATTR_ACCESS3(read_write, ref, size) + +#define ATTR_ACCESS2_W(ref) ATTR_ACCESS2(write_only, ref) +#define ATTR_ACCESS3_W(ref, size) ATTR_ACCESS3(write_only, ref, size) + // ignore casts discarding const specifier, e.g. // const char [] -> char * / void * // const char *[2]' -> char *const * -- cgit v1.2.3