components/gcc47/patches/005-libitm-rwlock.patch
changeset 1414 9eeb516d9fdd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gcc47/patches/005-libitm-rwlock.patch	Wed Jul 31 08:09:01 2013 -0700
@@ -0,0 +1,26 @@
+# 2013-02-07  Stefan Teleman <[email protected]>
+# Not everything aligns on 4.
+#
+#       * Fix Solaris alignment. (st)
+#
+--- gcc-4.7.3/libitm/config/posix/rwlock.h	2011-12-23 17:42:35.000000000 -0800
++++ gcc-4.7.3/libitm/config/posix/rwlock.h	2013-02-25 14:28:47.945337684 -0800
+@@ -47,10 +47,14 @@
+ 
+ class gtm_rwlock
+ {
+-  pthread_mutex_t mutex;	        // Held if manipulating any field.
+-  pthread_cond_t c_readers;	        // Readers wait here
+-  pthread_cond_t c_writers;	        // Writers wait here for writers
+-  pthread_cond_t c_confirmed_writers;	// Writers wait here for readers
++  pthread_mutex_t mutex
++      __attribute__((__aligned__(8)));	// Held if manipulating any field.
++  pthread_cond_t c_readers
++      __attribute__((__aligned__(8)));	// Readers wait here
++  pthread_cond_t c_writers
++      __attribute__((__aligned__(8)));	// Writers wait here for writers
++  pthread_cond_t c_confirmed_writers
++      __attribute__((__aligned__(8)));	// Writers wait here for readers
+ 
+   static const unsigned a_writer  = 1;	// An active writer.
+   static const unsigned w_writer  = 2;	// The w_writers field != 0