Преглед на файлове

fix omission of dtv setup in static linked programs on TLS variant I archs

apparently this was never noticed before because the linker normally
optimizes dynamic TLS models to non-dynamic ones when static linking,
thus eliminating the calls to __tls_get_addr which crash when the dtv
is missing. however, some libsupc++ code on ARM was calling
__tls_get_addr when static linked and crashing. the reason is unclear
to me, but with this issue fixed it should work now anyway.
Rich Felker преди 11 години
родител
ревизия
f1292e3d28
променени са 1 файла, в които са добавени 1 реда и са изтрити 1 реда
  1. 1 1
      src/env/__init_tls.c

+ 1 - 1
src/env/__init_tls.c

@@ -26,9 +26,9 @@ void *__copy_tls(unsigned char *mem)
 	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;