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. Once this is upstream I may try to further clean up struct __pthread, possibly moving "important" fields like tid to be near end for TLS_ABOVE_TP archs to ensure that small negative offsets suffice to access them. Rich