this was only a tiny optimization, and static-linked binaries should not be calling __tls_get_addr anyway since the linker is supposed to perform relaxation, resulting in use of the local-exec TLS model.
17 lines
364 B
C
17 lines
364 B
C
#include <stddef.h>
|
|
#include "pthread_impl.h"
|
|
#include "libc.h"
|
|
|
|
__attribute__((__visibility__("hidden")))
|
|
void *__tls_get_new(size_t *);
|
|
|
|
void *__tls_get_addr(size_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);
|