fix inconsistent visibility for internal __tls_get_new function

at the point of call it was declared hidden, but the definition was
not hidden. for some toolchains this inconsistency produced textrels
without ld-time binding.
This commit is contained in:
Rich Felker 2015-04-14 10:42:44 -04:00
parent da7ccf822c
commit bc081f628b
2 changed files with 3 additions and 3 deletions

View File

@ -1051,6 +1051,7 @@ void *__copy_tls(unsigned char *mem)
return td; return td;
} }
__attribute__((__visibility__("hidden")))
void *__tls_get_new(size_t *v) void *__tls_get_new(size_t *v)
{ {
pthread_t self = __pthread_self(); pthread_t self = __pthread_self();

View File

@ -1,13 +1,12 @@
#include <stddef.h> #include <stddef.h>
#include "pthread_impl.h" #include "pthread_impl.h"
#include "libc.h"
void *__tls_get_new(size_t *) ATTR_LIBC_VISIBILITY;
void *__tls_get_addr(size_t *v) void *__tls_get_addr(size_t *v)
{ {
pthread_t self = __pthread_self(); pthread_t self = __pthread_self();
#ifdef SHARED #ifdef SHARED
__attribute__((__visibility__("hidden")))
void *__tls_get_new(size_t *);
if (v[0]<=(size_t)self->dtv[0]) if (v[0]<=(size_t)self->dtv[0])
return (char *)self->dtv[v[0]]+v[1]; return (char *)self->dtv[v[0]]+v[1];
return __tls_get_new(v); return __tls_get_new(v);