summaryrefslogblamecommitdiff
path: root/src/thread/__tls_get_addr.c
blob: 36333967bee9b237d5a006bf435d8a2976ba30f0 (plain) (tree)
1
2
3
4
5
6
7
8
9

                         




                                          

                                                 






                                                    
#include <stddef.h>
#include "pthread_impl.h"

void *__tls_get_addr(size_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];
	return __tls_get_new(v);
#else
	return (char *)self->dtv[1]+v[1];
#endif
}