From: Rich Felker Date: Sat, 30 Jan 2016 19:34:45 +0000 (-0500) Subject: fix regression in dynamic-linked tls when both main app & libs have tls X-Git-Tag: v1.1.13~23 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=140ad50cbf9244eecc21a0126c743396a34e8106;p=oweals%2Fmusl.git fix regression in dynamic-linked tls when both main app & libs have tls commit d56460c939c94a6c547abe8238f442b8de10bfbd introduced this bug by setting up the tls module chain incorrectly when the main app has tls. the singly-linked list head pointer was setup correctly, but the tail pointer was not, so the first attempt to append to the list (for a shared library with tls) would treat the list as empty and effectively removed the main app from the list. this left all tls module id numbers off-by-one. this bug did not appear in any released versions. --- diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 26a60b4c..f497542e 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1519,7 +1519,7 @@ _Noreturn void __dls3(size_t *sp) } } if (app.tls.size) { - libc.tls_head = &app.tls; + libc.tls_head = tls_tail = &app.tls; app.tls_id = tls_cnt = 1; #ifdef TLS_ABOVE_TP app.tls.offset = 0;