rewrite __synccall in terms of global thread list
[musl] / src / thread / __tls_get_addr.c
index 3633396..d7afdab 100644 (file)
@@ -1,16 +1,12 @@
 #include <stddef.h>
 #include "pthread_impl.h"
 
-void *__tls_get_addr(size_t *v)
+void *__tls_get_addr(tls_mod_off_t *v)
 {
        pthread_t self = __pthread_self();
-#ifdef SHARED
-       __attribute__((__visibility__("hidden")))
-       void *__tls_get_new(size_t *);
-       if (v[0]<=(size_t)self->dtv[0])
-               return (char *)self->dtv[v[0]]+v[1];
+       if (v[0] <= self->dtv[0])
+               return (void *)(self->dtv[v[0]] + v[1]);
        return __tls_get_new(v);
-#else
-       return (char *)self->dtv[1]+v[1];
-#endif
 }
+
+weak_alias(__tls_get_addr, __tls_get_new);