summaryrefslogtreecommitdiff
path: root/include/compiler.h
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2021-02-22 12:03:53 -0500
committerPeter Jones <pjones@redhat.com>2021-02-25 10:15:14 -0500
commitc1722924cee57e1eb27cad656baf079bf809b8f6 (patch)
tree2a198b1a1a4ae7355dc267d62beb601ed339d01d /include/compiler.h
parentd27c33b2fa544f89433e99f92122d21eaa06861d (diff)
downloadefi-boot-shim-c1722924cee57e1eb27cad656baf079bf809b8f6.tar.gz
efi-boot-shim-c1722924cee57e1eb27cad656baf079bf809b8f6.zip
compiler.h: fix a typo and add some more function attribute macros
This fixes the ifndef guard on NONNULL and __CONCAT3 and adds definitions for: - __CONCAT() for a##b with the intermediate tokenization step - ALLOCFUNC for __malloc__ - DEPRECATED for __deprecated__ - PURE for __pure__ - RETURNS_NONNULL for __nonnull__ Signed-off-by: Peter Jones <pjones@redhat.com>
Diffstat (limited to 'include/compiler.h')
-rw-r--r--include/compiler.h31
1 files changed, 29 insertions, 2 deletions
diff --git a/include/compiler.h b/include/compiler.h
index 4e44840d..3cabd09c 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -3,6 +3,24 @@
#ifndef COMPILER_H_
#define COMPILER_H_
+/*
+ * These are special ones that get our unit tests in trouble with the
+ * compiler optimizer dropping out tests...
+ */
+#ifdef NONNULL
+# undef NONNULL
+#endif
+#ifdef RETURNS_NONNULL
+# undef RETURNS_NONNULL
+#endif
+#ifdef SHIM_UNIT_TEST
+# define NONNULL(first, args...)
+# define RETURNS_NONNULL
+#else
+# define NONNULL(first, args...) __attribute__((__nonnull__(first, ## args)))
+# define RETURNS_NONNULL __attribute__((__returns_nonnull__))
+#endif
+
#ifndef UNUSED
#define UNUSED __attribute__((__unused__))
#endif
@@ -12,6 +30,9 @@
#ifndef PUBLIC
#define PUBLIC __attribute__((__visibility__ ("default")))
#endif
+#ifndef DEPRECATED
+#define DEPRECATED __attribute__((__deprecated__))
+#endif
#ifndef DESTRUCTOR
#define DESTRUCTOR __attribute__((destructor))
#endif
@@ -21,12 +42,15 @@
#ifndef ALIAS
#define ALIAS(x) __attribute__((weak, alias (#x)))
#endif
-#ifndef NONNULL
+#ifndef ALLOCFUNC
+#define ALLOCFUNC(dealloc, dealloc_arg) __attribute__((__malloc__(dealloc, dealloc_arg)))
#endif
-#define NONNULL(first, args...) __attribute__((__nonnull__(first, ## args)))
#ifndef PRINTF
#define PRINTF(first, args...) __attribute__((__format__(printf, first, ## args)))
#endif
+#ifndef PURE
+#define PURE __attribute__((__pure__))
+#endif
#ifndef FLATTEN
#define FLATTEN __attribute__((__flatten__))
#endif
@@ -56,6 +80,9 @@
#endif
#ifndef __CONCAT
+#define __CONCAT(a, b) a ## b
+#endif
+#ifndef __CONCAT3
#define __CONCAT3(a, b, c) a ## b ## c
#endif
#ifndef CAT