summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex James <theracermaster@gmail.com>2019-10-22 18:32:22 -0500
committerPatrick Georgi <pgeorgi@google.com>2019-11-05 15:00:44 +0000
commit8119841ec0da8ab088ed23961d3a3e4b25551f18 (patch)
tree5095b63f286837e73ffe35a5473f5941bb2088fa
parentddcfcb8ebc64d71717407607323fd18e29fa651e (diff)
downloadcoreboot-8119841ec0da8ab088ed23961d3a3e4b25551f18.tar.xz
commonlib: Use __builtin_offsetof with supported compilers
Use __builtin_offsetof (which is treated as a constant expression) with Clang & GCC. This also allows check_member to work with Clang 9. Signed-off-by: Alex James <theracermaster@gmail.com> Change-Id: I8b5cb4110c13ee42114ecf65932d7f1e5636210e Reviewed-on: https://review.coreboot.org/c/coreboot/+/36249 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/commonlib/include/commonlib/helpers.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/commonlib/include/commonlib/helpers.h b/src/commonlib/include/commonlib/helpers.h
index f3b71d7016..ca3b3c58f9 100644
--- a/src/commonlib/include/commonlib/helpers.h
+++ b/src/commonlib/include/commonlib/helpers.h
@@ -108,16 +108,16 @@
#define GHz (1000 * MHz)
#ifndef offsetof
+#ifdef __ROMCC__
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
+#endif
#endif
-#if !defined(__clang__)
#define check_member(structure, member, offset) _Static_assert( \
offsetof(struct structure, member) == offset, \
"`struct " #structure "` offset for `" #member "` is not " #offset)
-#else
-#define check_member(structure, member, offset)
-#endif
/**
* container_of - cast a member of a structure out to the containing structure