John David Anglin writes: > [[PGP Signed Part:Undecided]] > hppa: Drop 16-byte pthread lock alignment > > Linux threads were removed about 12 years ago and the current > nptl implementation only requires 4-byte alignment for pthread > locks. > > The 16-byte alignment causes various issues. For example in > building ignition-msgs, we have: > > /usr/include/google/protobuf/map.h:124:37: error: static assertion failed > 124 | static_assert(alignof(value_type) <= 8, ""); > | ~~~~~~~~~~~~~~~~~~~~^~~~ > > This is caused by the 16-byte pthread lock alignment. Dave will be aware of the context but posting this just for completeness: see also: https://github.com/protocolbuffers/protobuf/issues/9433 where David Seifert (soap@, CC'd) provided some analysis. > > Signed-off-by: John David Anglin > --- > > diff --git a/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h b/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h > index 999195c5b0..c1a46d66d0 100644 > --- a/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h > +++ b/sysdeps/hppa/nptl/bits/pthreadtypes-arch.h > @@ -40,7 +40,7 @@ > #define __SIZEOF_PTHREAD_RWLOCK_T 64 > #define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 > > -#define __LOCK_ALIGNMENT __attribute__ ((__aligned__(16))) > +#define __LOCK_ALIGNMENT > #define __ONCE_ALIGNMENT > > #endif /* bits/pthreadtypes.h */ > diff --git a/sysdeps/hppa/nptl/bits/struct_rwlock.h b/sysdeps/hppa/nptl/bits/struct_rwlock.h > index e83b4aab52..59bc9fe76f 100644 > --- a/sysdeps/hppa/nptl/bits/struct_rwlock.h > +++ b/sysdeps/hppa/nptl/bits/struct_rwlock.h > @@ -25,8 +25,14 @@ struct __pthread_rwlock_arch_t > /* In the old Linuxthreads pthread_rwlock_t, this is the > 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] __attribute__ ((__aligned__(16))); > + PTHREAD_RWLOCK_INITIALIZER. We ignore them in NPTL. > + > + The 16-byte aligned lock stucture causes various pthread > + structures to be over aligned. This causes some builds > + to fail which assume a maximum alignment of 8 bytes. > + Linuxthreads has been removed for 12 years, so drop > + alignment of lock structure. */ > + int __compat_padding[4]; > unsigned int __readers; > unsigned int __writers; > unsigned int __wrphase_futex; > > [[End of PGP Signed Part]]