--- /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*] {