diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2023-02-04 17:34:08 +0100 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2023-02-18 17:07:17 +0100 |
commit | 8387df1551f18b90b3936c7cbb311416c3db8032 (patch) | |
tree | 2cc511d578c0a2ea01226cc6b7f0d14e37294954 /Macros.h | |
parent | f60d4057573ecb6a5021e754f54983c709977c62 (diff) |
Annotate functions with access attribute
Supported by GCC since version 10.
Diffstat (limited to 'Macros.h')
-rw-r--r-- | Macros.h | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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 * |