fix omission of dtv setup in static linked programs on TLS variant I archs
[musl] / src / env / __init_tls.c
index 3a1b1f5..a4704f0 100644 (file)
@@ -23,12 +23,12 @@ void *__copy_tls(unsigned char *mem)
        td = (pthread_t)mem;
        mem += sizeof(struct pthread);
 #else
-       mem += __libc.tls_size - sizeof(struct pthread);
+       mem += libc.tls_size - sizeof(struct pthread);
        mem -= (uintptr_t)mem & (align-1);
        td = (pthread_t)mem;
-       td->dtv = dtv;
        mem -= size;
 #endif
+       td->dtv = dtv;
        dtv[1] = mem;
        memcpy(mem, image, len);
        return td;