summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/include/compiler.h44
1 files changed, 27 insertions, 17 deletions
diff --git a/payloads/libpayload/include/compiler.h b/payloads/libpayload/include/compiler.h
index 0d56cbea4b..ee2ff88d10 100644
--- a/payloads/libpayload/include/compiler.h
+++ b/payloads/libpayload/include/compiler.h
@@ -1,29 +1,39 @@
-/*
- *
- * Copyright 2017 Google Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __COMPILER_H__
-#define __COMPILER_H__
+/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only */
+#ifndef _COMMONLIB_BSD_COMPILER_H_
+#define _COMMONLIB_BSD_COMPILER_H_
+
+#ifndef __packed
#if defined(__WIN32) || defined(__WIN64)
#define __packed __attribute__((gcc_struct, packed))
#else
#define __packed __attribute__((packed))
#endif
+#endif
+#ifndef __aligned
#define __aligned(x) __attribute__((aligned(x)))
+#endif
+
+#ifndef __always_unused
#define __always_unused __attribute__((unused))
+#endif
+
+#ifndef __must_check
#define __must_check __attribute__((warn_unused_result))
+#endif
+
+#ifndef __weak
+#define __weak __attribute__((weak))
+#endif
+
+#ifndef __noreturn
+#define __noreturn __attribute__((noreturn))
+#endif
+
+#ifndef __always_inline
+#define __always_inline inline __attribute__((always_inline))
+#endif
/* This evaluates to the type of the first expression, unless that is constant
in which case it evalutates to the type of the second. This is useful when
@@ -32,7 +42,7 @@
literals. By using this macro, the promotion can happen at the time the
literal is assigned to the temporary variable. If the literal doesn't fit in
the chosen type, -Werror=overflow will catch it, so this should be safe. */
-#define __TYPEOF_UNLESS_CONST(expr, fallback_expr) typeof( \
+#define __TYPEOF_UNLESS_CONST(expr, fallback_expr) __typeof__( \
__builtin_choose_expr(__builtin_constant_p(expr), fallback_expr, expr))
/* This creates a unique local variable name for use in macros. */