about summary refs log tree commit diff
path: root/src/ldso/dynlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso/dynlink.c')
-rw-r--r--src/ldso/dynlink.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 4e0b9f4e..774ab849 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -654,6 +654,16 @@ void *__copy_tls(unsigned char *mem, size_t cnt)
 	return mem;
 }
 
+void *__tls_get_addr(size_t *p)
+{
+	pthread_t self = __pthread_self();
+	if ((size_t)self->dtv[0] < p[0]) {
+		// FIXME: obtain new DTV and TLS from the DSO
+		a_crash();
+	}
+	return (char *)self->dtv[p[0]] + p[1];
+}
+
 void *__dynlink(int argc, char **argv)
 {
 	size_t aux[AUX_CNT] = {0};