----- On Sep 19, 2018, at 3:49 PM, Joseph Myers joseph@xxxxxxxxxxxxxxxx wrote: > On Wed, 19 Sep 2018, Szabolcs Nagy wrote: > >> i don't think there is precedent for exposing tls symbol in glibc >> (e.g. errno is exposed via __errno_location function) so there >> might be issues with this (but i don't have immediate concerns). > > There have been suggestions to expose TLS errno - but also suggestions > that use of __errno_location is more efficient, at least in terms of code > size everywhere errno is accessed (for some ABIs, anyway). AFAIU, the trade-off is different between the errno use-case and the rseq use-case. If my understanding is correct, errno is not supposed to be used in fast-paths, only when an error is returned. So size is more important than speed there. Comparatively, rseq is _meant_ to speed up fast-paths. A per-cpu statistics counter can be incremented in 2ns with rseq on a Intel E5-2630, which is faster than a simple function call. So for rseq, we should favor speed over space, which means the user applications and libraries would need access to the TLS symbol without requiring an accessor function. That's also why I'm using the initial-exec tls model rather than the global-dynamic: I want to make sure no function call is generated there. > The ABI tests have code that would list .tbss symbols as "T" in ABI test > baselines, but no existing ABI baselines use that. Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com