Add correct aligment to pthread_*_t structures.
authorCarlos O'Donell <carlos@systemhalted.org>
Wed, 25 Nov 2009 23:18:56 +0000 (18:18 -0500)
committerCarlos O'Donell <carlos@systemhalted.org>
Wed, 25 Nov 2009 23:18:56 +0000 (18:18 -0500)
In the switch to NPTL the pthrad_mutex_t, pthread_cond_t,
and pthread_rwlock_t structures were made binary compatible
with the Linuxthread versions. However, their aligment when
embedded in other structures was changed. When rebuilding
libstdc++ this was detected, and the following changes return
the structures to their original Linuxthreads alignments.

2009-11-25  Carlos O'Donell  <carlos@codesourcery.com>

* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
Use correct alignment for pthread_mutex_t, pthread_cond_t,
and pthread_rwlock_t.

ChangeLog.hppa
sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h

index ac6acba..24a152e 100644 (file)
@@ -1,3 +1,9 @@
+2009-11-25  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
+       Use correct alignment for pthread_mutex_t, pthread_cond_t,
+       and pthread_rwlock_t.  
+
 2009-11-22  Carlos O'Donell  <carlos@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/hppa/bits/atomic.h: Avoid warnings
index 87c1a55..952e53c 100644 (file)
@@ -64,7 +64,7 @@ typedef union
 {
   struct __pthread_mutex_s
   {
-    int __lock;
+    int __lock __attribute__ ((aligned(16)));
     unsigned int __count;
     int __owner;
     /* KIND must stay at this position in the structure to maintain
@@ -113,7 +113,7 @@ typedef union
        start of the 4-word lock structure, the next four words
        are set all to 1 by the Linuxthreads 
        PTHREAD_COND_INITIALIZER.  */
-    int __lock;
+    int __lock __attribute__ ((aligned(16)));
     /* Tracks the initialization of this structure:
        0  initialized with NPTL PTHREAD_COND_INITIALIZER.
        1  initialized with Linuxthreads PTHREAD_COND_INITIALIZER.
@@ -161,7 +161,7 @@ typedef union
        start of the 4-word 16-byte aligned lock structure. The
        next four words are all set to 1 by the Linuxthreads
        PTHREAD_RWLOCK_INITIALIZER. We ignore them in NPTL.  */
-    int __compat_padding[4];
+    int __compat_padding[4] __attribute__ ((aligned(16)));
     int __lock;
     unsigned int __nr_readers;
     unsigned int __readers_wakeup;