From 52fa622ab6423e3d2b7eff94d9b3e7610b0fa26b Mon Sep 17 00:00:00 2001
From: Corinna Vinschen <corinna@vinschen.de>
Date: Mon, 18 Oct 2004 14:26:18 +0000
Subject: [PATCH] 	* sysv_sem.cc: Redefine offsetof to circumvent build
 problems with 	gcc 3.4.

---
 winsup/cygserver/ChangeLog   | 5 +++++
 winsup/cygserver/sysv_sem.cc | 9 +++++++++
 2 files changed, 14 insertions(+)

diff --git a/winsup/cygserver/ChangeLog b/winsup/cygserver/ChangeLog
index 225a1ebd0..157b093b2 100644
--- a/winsup/cygserver/ChangeLog
+++ b/winsup/cygserver/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-18  Corinna Vinschen  <corinna@vinschen.de>
+
+	* sysv_sem.cc: Redefine offsetof to circumvent build problems with
+	gcc 3.4.
+
 2004-10-04  Corinna Vinschen  <corinna@vinschen.de>
 
 	* bsd_mutex.cc (_msleep): Simplify event creation.  Revert change from
diff --git a/winsup/cygserver/sysv_sem.cc b/winsup/cygserver/sysv_sem.cc
index a4acf37f1..bcd0dc251 100644
--- a/winsup/cygserver/sysv_sem.cc
+++ b/winsup/cygserver/sysv_sem.cc
@@ -147,6 +147,15 @@ struct sem_undo {
 #define SEMAEM	16384		/* adjust on exit max value */
 #endif
 
+#ifdef __CYGWIN__
+/* gcc 3.4 defines a new offsetof which is different for C++.  Since this
+   file is just a derived plain-C file, we need to revert to the plain-C
+   definition of offsetof. */
+#ifdef offsetof
+#undef offsetof
+#endif
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif /* __CYGWIN__ */
 /*
  * Due to the way semaphore memory is allocated, we have to ensure that
  * SEMUSZ is properly aligned.