--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/stdcxx/patches/034-_mutex.h.34.patch Thu Jul 14 11:26:11 2011 -0700
@@ -0,0 +1,130 @@
+--- stdcxx-4.2.1/include/rw/_mutex.h 2008-04-24 20:23:43.000000000 -0400
++++ stdcxx-4.2.1/include/rw/_mutex.h 2009-07-29 17:08:47.000000000 -0400
+@@ -316,6 +316,10 @@
+ }
+ };
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma pack(8)
++# pragma align 8(__rw_mutex_base)
++#endif
+
+ // POD type with no user-defined ctor or dtor facilitates static
+ // initialization of mutex objects with static storage duration
+@@ -354,6 +358,9 @@
+
+ #endif // _RWSTD_NO_STATIC_MUTEX_INIT
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(_C_mutex)
++#endif
+ _RWSTD_MUTEX_T _C_mutex; // the real thing
+ };
+
+@@ -367,6 +374,10 @@
+ }
+
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__rw_mutex)
++#endif
++
+ // non-POD type, always initializes mutex data member via a function call
+ class _RWSTD_EXPORT __rw_mutex: public __rw_mutex_base
+ {
+@@ -391,6 +402,10 @@
+
+ #ifndef _RWSTD_NO_STATIC_MUTEX_INIT
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__rw_static_mutex)
++#endif
++
+ // helper factory class - static member is guranteed to be constructed
+ // during static initialization; objects of this POD class are not
+ // destroyed during program termination (important to allow them
+@@ -398,6 +413,9 @@
+ template <class _TypeT>
+ struct __rw_static_mutex
+ {
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(_C_mutex)
++#endif
+ static __rw_mutex_base _C_mutex;
+ };
+
+@@ -485,17 +503,34 @@
+ #endif // _INLINE_WITH_STATICS
+
+ {
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__mutex_buf_t)
++#endif
++
+ // allocate properly aligned memory for static mutex (necessary
+ // to prevent static local mutex from being destroyed during
+ // program termination)
+ union __mutex_buf_t {
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++ unsigned long long __pad; // force alignment (must be first)
++ unsigned char __buf [sizeof (__rw_mutex_base)];
++#else
+ long double __pad; // force alignment (must be first)
+ char __buf [sizeof (__rw_mutex_base)];
++#endif
+ };
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__mutex_buf)
++#endif
++
+ // using a named union to work around a bug in HP aCC 3.14.10 (JAGad03246)
+ static __mutex_buf_t __mutex_buf;
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__mutex)
++#endif
++
+ // initialize mutex reference to refer to the static buffer space
+ __rw_mutex_base &__mutex =
+ _RWSTD_REINTERPRET_CAST (__rw_mutex_base&, __mutex_buf);
+@@ -541,6 +576,10 @@
+ #undef _RWSTD_MUTEX_T
+
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__rw_guard)
++#endif
++
+ // allows safe use of a mutex in the presence of exceptions
+ class __rw_guard
+ {
+@@ -576,6 +615,9 @@
+ }
+ };
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma align 8(__rw_synchronized)
++#endif
+
+ // base class for obects required to guarantee some degree of MT safety
+ struct _RWSTD_EXPORT __rw_synchronized
+@@ -596,7 +638,6 @@
+ }
+ };
+
+-
+ // helper functions for atomic value [in|de]crement and exchange
+ // the functions are atomic with respect to each other as long as
+ // they are passed the same mutex by the callers
+@@ -670,6 +711,10 @@
+ __rw_get_static_mutex ((_TypeT*)0));
+ }
+
++#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT)
++# pragma pack(0)
++#endif
++
+ /********************** no atomic ops ********************************/
+
+ #if defined (_RWSTD_NO_ATOMIC_OPS)