Add correct aligment to pthread_*_t structures.

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.
This commit is contained in:
Carlos O'Donell 2009-11-25 18:18:56 -05:00
parent 8fe357d5c6
commit b80ec53691
2 changed files with 9 additions and 3 deletions

View 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

View 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;