On Tue, Aug 25, 2020 at 6:43 PM Rich Felker <dalias@libc.org> wrote:
The attached patch series refactors fragments from pthread_arch.h to
reduce redundancy and allow pthread_arch.h to be included at the top
of pthread_impl.h, where it can be used to influence the
definition/layout of struct __pthread, rather than the middle of the
file. This makes it possible to get rid of the duplicate canary and
dtv members that existed just to match multiple ABIs silumtaneously.

This involved a good deal of manual conversion/deduplication so it's
possible there are bugs for some archs. That's why I've posted the
series for review rather than just pushing. Reports of success/failure
(disassembly of pthread_self.o before/after probably suffice to
confirm no regression) would be very helpful.

I mechanically confirmed for all archs that with the first two patches applied, disassembly of pthread_self.o before/after doesn't change. The third patch obviously changes the offset for most archs due to change in sizeof struct pthread.

Only other remark: ricv64's __get_tp misses the change of the variable type from char * to uintptr_t.