84a413d4a8cd4be9bdd662b66d10c6fe877bc76b
[musl] / src / thread / __tls_get_addr.c
1 #include <stddef.h>
2 #include "pthread_impl.h"
3
4 void *__tls_get_addr(size_t *v)
5 {
6         pthread_t self = __pthread_self();
7 #ifdef SHARED
8         __attribute__((__visibility__("hidden")))
9         void *__tls_get_new(size_t *);
10         if (v[0]<=(size_t)self->dtv[0])
11                 return (char *)self->dtv[v[0]]+v[1]+DTP_OFFSET;
12         return __tls_get_new(v);
13 #else
14         return (char *)self->dtv[1]+v[1]+DTP_OFFSET;
15 #endif
16 }