https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113874
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Florian Weimer from comment #11) > (In reply to Richard Biener from comment #10) > > I think a glibc fix would be very much preferred. > > It's a bit of a maintenance nightmare because we have to update the code > slightly each time new registers are added, and there isn't a good way for > applications to detect whether they run on a compatible glibc. But it is what the ABI of GNU2 TLS says or what even dl-tlsdesc.C says: /* Preserve call-clobbered registers that we modify. Yeah, the fact that it can call user-overloaded malloc significantly complicates stuff, otherwise it would be just a matter of new registers that can be modified while running whatever __tls_get_addr needs and could be changed only when glibc is rebuilt with some newer compiler which starts modifying further call clobbered registers. But with overloaded malloc it can be just if the overloaded malloc is rebuilt with newer compiler...