Index: fusl/src/thread/__tls_get_addr.c |
diff --git a/fusl/src/thread/__tls_get_addr.c b/fusl/src/thread/__tls_get_addr.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6945faa060d75ca66a5a4d3b01d34f1178b2cc9f |
--- /dev/null |
+++ b/fusl/src/thread/__tls_get_addr.c |
@@ -0,0 +1,16 @@ |
+#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); |