Use 3 bytes for __pad1 in pthread_rwlock_t for x32

Since long is 4 bytes for x32, we should use 3 bytes for __pad1 when
a long __pad1 is replaced by a byte __rwelision and __pad1.

	* sysdeps/x86/nptl/bits/pthreadtypes.h (pthread_rwlock_t): Use
	3 bytes for __pad1 for x32.
	(__PTHREAD_RWLOCK_ELISION_EXTRA): Likewise.
This commit is contained in:
H.J. Lu 2014-06-19 15:22:52 -07:00
parent 5c74e47cd6
commit c8daec5c7c
2 changed files with 12 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2014-06-19 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86/nptl/bits/pthreadtypes.h (pthread_rwlock_t): Use
3 bytes for __pad1 for x32.
(__PTHREAD_RWLOCK_ELISION_EXTRA): Likewise.
2014-06-19 Ling Ma <ling.ml@alibaba-inc.com>
H.J. Lu <hongjiu.lu@intel.com>

View File

@ -185,12 +185,17 @@ typedef union
int __writer;
int __shared;
signed char __rwelision;
# ifdef __ILP32__
unsigned char __pad1[3];
# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0 }
# else
unsigned char __pad1[7];
# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 }
# endif
unsigned long int __pad2;
/* FLAGS must stay at this position in the structure to maintain
binary compatibility. */
unsigned int __flags;
# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, {0, 0, 0, 0, 0, 0, 0 }
# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1
} __data;
# else