summaryrefslogtreecommitdiff
path: root/src/thread/__tls_get_addr.c
blob: 3b6c9b1b2a2b3f1e3f97f226d092be83f9fec24f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stddef.h>
#include "pthread_impl.h"
#include "libc.h"

__attribute__((__visibility__("hidden")))
void *__tls_get_new(tls_mod_off_t *);

void *__tls_get_addr(tls_mod_off_t *v)
{
	pthread_t self = __pthread_self();
	if (v[0]<=(size_t)self->dtv[0])
		return (char *)self->dtv[v[0]]+v[1]+DTP_OFFSET;
	return __tls_get_new(v);
}

weak_alias(__tls_get_addr, __tls_get_new);