提交 bc081f62 编写于 作者: R Rich Felker

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.
上级 da7ccf82
...@@ -1051,6 +1051,7 @@ void *__copy_tls(unsigned char *mem) ...@@ -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();
......
#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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册