components/gcc48/patches/003-libgomp-omp_h-multilib.patch
branchs11-update
changeset 2997 6a6348ea8de7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gcc48/patches/003-libgomp-omp_h-multilib.patch	Fri Mar 21 00:13:55 2014 -0700
@@ -0,0 +1,119 @@
+# 2013-02-07  Stefan Teleman <[email protected]>
+# Not everything aligns on 4.
+#
+#	* Fix Solaris alignment. (st)
+#
+--- gcc-4.7.3/libgomp/omp.h.in	2011-08-02 09:13:29.000000000 -0700
++++ gcc-4.7.3/libgomp/omp.h.in	2013-03-02 12:54:41.720505107 -0800
+@@ -31,16 +31,24 @@
+    reflect the shape of the two types.  Their internals are private
+    to the library.  */
+ 
++#if defined(__x86_64__) || defined(__amd64) || defined(__sparc)
++#define OMP_LOCK_ALIGN 8
++#define OMP_NEST_LOCK_ALIGN 8
++#else
++#define OMP_LOCK_ALIGN 4
++#define OMP_NEST_LOCK_ALIGN 4
++#endif
++
+ typedef struct
+ {
+   unsigned char _x[@OMP_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_LOCK_ALIGN@)));
++    __attribute__((__aligned__(OMP_LOCK_ALIGN)));
+ } omp_lock_t;
+ 
+ typedef struct
+ {
+   unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++    __attribute__((__aligned__(OMP_NEST_LOCK_ALIGN)));
+ } omp_nest_lock_t;
+ #endif
+ 
+--- gcc-4.7.3/libgomp/config/posix/omp-lock.h	2008-06-06 09:01:54.000000000 -0400
++++ gcc-4.7.3/libgomp/config/posix/omp-lock.h	2013-02-25 14:11:24.930553496 -0500
+@@ -11,12 +11,19 @@
+ #include <semaphore.h>
+ 
+ typedef pthread_mutex_t omp_lock_25_t;
+-typedef struct { pthread_mutex_t lock; int count; } omp_nest_lock_25_t;
++typedef struct {
++  pthread_mutex_t lock __attribute__((__aligned__(8)));
++  int count;
++} omp_nest_lock_25_t __attribute__((__aligned__(8)));
+ #ifdef HAVE_BROKEN_POSIX_SEMAPHORES
+ /* If we don't have working semaphores, we'll make all explicit tasks
+    tied to the creating thread.  */
+ typedef pthread_mutex_t omp_lock_t;
+-typedef struct { pthread_mutex_t lock; int count; void *owner; } omp_nest_lock_t;
++typedef struct {
++  pthread_mutex_t lock __attribute__((__aligned__(8)));
++  int count;
++  void *owner;
++} omp_nest_lock_t __attribute__((__aligned__(8)));
+ #else
+ typedef sem_t omp_lock_t;
+ typedef struct { sem_t lock; int count; void *owner; } omp_nest_lock_t;
+
+--- gcc-4.7.3/libgomp/config/posix/ptrlock.h	2009-04-09 11:00:19.000000000 -0400
++++ gcc-4.7.3/libgomp/config/posix/ptrlock.h	2013-02-25 14:17:24.458008326 -0500
+@@ -29,7 +29,10 @@
+ #ifndef GOMP_PTRLOCK_H
+ #define GOMP_PTRLOCK_H 1
+ 
+-typedef struct { void *ptr; gomp_mutex_t lock; } gomp_ptrlock_t;
++typedef struct {
++  gomp_mutex_t lock __attribute__((__aligned__(8)));
++  void *ptr;
++} gomp_ptrlock_t __attribute__((__aligned__(8)));
+ 
+ static inline void gomp_ptrlock_init (gomp_ptrlock_t *ptrlock, void *ptr)
+ {
+
+--- gcc-4.7.3/libgomp/config/posix/sem.h	2009-04-09 11:00:19.000000000 -0400
++++ gcc-4.7.3/libgomp/config/posix/sem.h	2013-02-25 14:12:48.361516225 -0500
+@@ -48,10 +48,10 @@
+ 
+ struct gomp_sem
+ {
+-  pthread_mutex_t	mutex;
+-  pthread_cond_t	cond;
++  pthread_mutex_t	mutex __attribute__((__aligned__(8)));
++  pthread_cond_t	cond __attribute__((__aligned__(8)));
+   int			value;
+-};
++} __attribute__((__aligned__(8)));
+ 
+ typedef struct gomp_sem gomp_sem_t;
+ 
+@@ -85,3 +85,4 @@
+ }
+ #endif /* doesn't HAVE_BROKEN_POSIX_SEMAPHORES  */
+ #endif /* GOMP_SEM_H  */
++
+
+--- gcc-4.7.3/libgomp/Makefile.in	2012-09-20 00:23:55.000000000 -0700
++++ gcc-4.7.3/libgomp/Makefile.in	2013-03-01 06:29:56.402569714 -0800
+@@ -177,7 +177,7 @@
+ LD = @LD@
+ LDFLAGS = @LDFLAGS@
+ LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
++LIBS = -lrt -lc -lm
+ LIBTOOL = @LIBTOOL@
+ LIPO = @LIPO@
+ LN_S = @LN_S@
+
+--- gcc-4.8.2/libgomp/testsuite/lib/libgomp.exp	2012-04-11 13:15:35.000000000 -0700
++++ gcc-4.8.2/libgomp/testsuite/lib/libgomp.exp	2013-10-17 11:24:46.071639082 -0700
+@@ -142,7 +142,7 @@
+     # We use atomic operations in the testcases to validate results.
+     if { ([istarget i?86-*-*] || [istarget x86_64-*-*])
+ 	 && [check_effective_target_ia32] } {
+-	lappend ALWAYS_CFLAGS "additional_flags=-march=i486"
++	lappend ALWAYS_CFLAGS "additional_flags=-march=pentium4"
+     }
+ 
+     if [istarget *-*-darwin*] {