[ovs-dev] [PATCH] compiler: Fix compilation when using VStudio 2015/2017
Alin Gabriel Serdean
aserdean at ovn.org
Wed Apr 3 12:01:55 UTC 2019
This is somewhat a regression of:
https://github.com/openvswitch/ovs/commit/27f141d44d95b4cabfd7eac47ace8d1201668b2c
The main issue using `offsetof` from <stddef.h> via the C compiler from
MSVC 2015/2017 has issues and is buggy:
https://bit.ly/2UvWwti
Until it is fixed, we define our own definition of `offsetof`.
Signed-off-by: Alin Gabriel Serdean <aserdean at ovn.org>
---
include/openvswitch/compiler.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/openvswitch/compiler.h b/include/openvswitch/compiler.h
index c7cb9308d..5289a70f6 100644
--- a/include/openvswitch/compiler.h
+++ b/include/openvswitch/compiler.h
@@ -236,6 +236,18 @@
#define OVS_PREFETCH_WRITE(addr)
#endif
+/* Since Visual Studio 2015 there has been an effort to make offsetof a
+ * builtin_offsetof, unfortunately both implementation (the regular define and
+ * the built in one) are buggy and cause issues when using them via
+ * the C compiler.
+ * e.g.: https://bit.ly/2UvWwti
+ */
+#if _MSC_VER >= 1900
+#undef offsetof
+#define offsetof(type, member) \
+ ((size_t)((char *)&(((type *)0)->member) - (char *)0))
+#endif
+
/* Build assertions.
*
* Use BUILD_ASSERT_DECL as a declaration or a statement, or BUILD_ASSERT as
--
2.21.0.windows.1
More information about the dev
mailing list