[committed] hppa: Drop 16-byte pthread lock alignment
John David Anglin
dave.anglin@bell.net
Thu Mar 30 21:08:34 GMT 2023
On 2023-03-27 8:42 a.m., Florian Weimer wrote:
>> Here is comment in map.h:
>> // MapAllocator does not support alignments beyond 8. Technically we should
>> // support up to std::max_align_t, but this fails with ubsan and tcmalloc
>> // debug allocation logic which assume 8 as default alignment.
>> static_assert(alignof(value_type) <= 8, "");
>>
>> It was the above comment that convinced me that we needed to change
>> the pthread lock alignment.
> It seems that current tcmalloc honors GCC's
> __STDCPP_DEFAULT_NEW_ALIGNMENT__:
>
> <https://github.com/google/tcmalloc/blob/master/tcmalloc/size_classes.cc>
Agreed.
The current tcmalloc is compiled with c++17. For earlier versions of c++, we have the
following issue:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0035r4.html
There are many packages in Debian and gentoo that are built with earlier versions of c++
and I don't see that changing. This includes protobuf. As a result, the over alignment of
pthread types will cause inconsistencies between different versions of c++ and c on hppa.
After discussion, the consensus was to remove the over alignment.
>
> On panama.debian.net, it seems correct:
>
> $ gcc -x c++ -E - < /dev/null -dM | grep __STDCPP_DEFAULT_NEW_ALIGNMENT__
> #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16
That should change to 8 to minimize wasted bytes. The current pthread types do not
need 16-byte alignment.
Dave
--
John David Anglin dave.anglin@bell.net
More information about the Libc-alpha
mailing list