fix tls access on arm targets before armv6k
authorSzabolcs Nagy <nsz@port70.net>
Thu, 23 Aug 2018 10:57:34 +0000 (10:57 +0000)
committerRich Felker <dalias@aerifal.cx>
Thu, 23 Aug 2018 20:41:44 +0000 (16:41 -0400)
commit 610c5a8524c3d6cd3ac5a5f1231422e7648a3791 changed the thread
pointer setup so tp points at the end of the pthread struct on arm,
but failed to update __aeabi_read_tp so it was off by 8.

this broke tls access in code that is compiled with -mtp=soft, which
is the default when target arch is pre armv6k or thumb1.

maintainer's note: no release versions are affected.

src/thread/arm/__aeabi_read_tp_c.c

index 654bdc577e5b70ea07044b33252e2d8f09aeb22e..0c56d61366d3ad93abccc39b26660dd8675003a0 100644 (file)
@@ -4,5 +4,5 @@
 __attribute__((__visibility__("hidden")))
 void *__aeabi_read_tp_c(void)
 {
-       return (void *)((uintptr_t)__pthread_self()-8+sizeof(struct pthread));
+       return TP_ADJ(__pthread_self());
 }