summaryrefslogtreecommitdiff
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
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>
-rw-r--r--.clang-format4
-rw-r--r--include/compiler.h31
-rw-r--r--mok.c6
-rw-r--r--shim.h2
4 files changed, 35 insertions, 8 deletions
diff --git a/.clang-format b/.clang-format
index 5e84eda1..8e78b9bc 100644
--- a/.clang-format
+++ b/.clang-format
@@ -137,7 +137,9 @@ SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
Standard: c++03
-StatementMacros: []
+StatementMacros:
+ - ALLOCFUNC
+ - NONNULL
TabWidth: 8
UseCRLF: false
UseTab: AlignWithSpaces
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
diff --git a/mok.c b/mok.c
index 4b935a49..ac0276ec 100644
--- a/mok.c
+++ b/mok.c
@@ -250,7 +250,7 @@ struct mok_state_variable mok_state_variables[] = {
#define should_mirror_addend(v) (((v)->categorize_addend) && ((v)->categorize_addend(v) != VENDOR_ADDEND_NONE))
-static inline BOOLEAN nonnull(1)
+static inline BOOLEAN NONNULL(1)
should_mirror_build_cert(struct mok_state_variable *v)
{
return (v->build_cert && v->build_cert_size &&
@@ -530,7 +530,7 @@ mirror_mok_db(CHAR16 *name, CHAR8 *name8, EFI_GUID *guid, UINT32 attrs,
}
-static EFI_STATUS nonnull(1)
+static EFI_STATUS NONNULL(1)
mirror_one_mok_variable(struct mok_state_variable *v,
BOOLEAN only_first)
{
@@ -840,7 +840,7 @@ mirror_one_mok_variable(struct mok_state_variable *v,
* Mirror a variable if it has an rtname, and preserve any
* EFI_SECURITY_VIOLATION status at the same time.
*/
-static EFI_STATUS nonnull(1)
+static EFI_STATUS NONNULL(1)
maybe_mirror_one_mok_variable(struct mok_state_variable *v,
EFI_STATUS ret, BOOLEAN only_first)
{
diff --git a/shim.h b/shim.h
index 44c01555..90d9e89c 100644
--- a/shim.h
+++ b/shim.h
@@ -33,8 +33,6 @@
#include <stddef.h>
#include <stdint.h>
-#define nonnull(...) __attribute__((__nonnull__(__VA_ARGS__)))
-
#ifdef __x86_64__
#ifndef DEFAULT_LOADER
#define DEFAULT_LOADER L"\\grubx64.efi"