summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2016-01-30 14:34:45 -0500
committerRich Felker <dalias@aerifal.cx>2016-01-30 14:34:45 -0500
commit140ad50cbf9244eecc21a0126c743396a34e8106 (patch)
tree6068bbd5fd59758e7219250f2eb0306b0607b490
parent1563587b45a39512df9b5810dcc5961d4d21a910 (diff)
downloadmusl-140ad50cbf9244eecc21a0126c743396a34e8106.tar.gz
musl-140ad50cbf9244eecc21a0126c743396a34e8106.tar.bz2
musl-140ad50cbf9244eecc21a0126c743396a34e8106.tar.xz
musl-140ad50cbf9244eecc21a0126c743396a34e8106.zip
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.
-rw-r--r--ldso/dynlink.c2
1 files changed, 1 insertions, 1 deletions
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;