fix crash in new dynamic tls installation when last dep lacks tls
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Feb 2019 07:09:36 +0000 (02:09 -0500)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Feb 2019 07:09:36 +0000 (02:09 -0500)
commit6516282d2adfad2c7e66d854cde3357120c75dbd
tree3abd654ed2dc6a6548f0241df4852e6d75078832
parentba18c1ecc6a18203ad8496791154af86f706f632
fix crash in new dynamic tls installation when last dep lacks tls

code introduced in commit 9d44b6460ab603487dab4d916342d9ba4467e6b9
wrongly assumed the dso list tail was the right place to find new dtv
storage. however, this is only true if the last-loaded dependency has
tls. the correct place to get it is the dso corresponding to the tls
module list tail. introduce a container_of macro to get it, and use
it.

ultimately, dynamic tls allocation should be refactored so that this
is not an issue. there is no reason to be allocating new dtv space at
each load_library; instead it could happen after all new libraries
have been loaded but before they are committed. such changes may be
made later, but this commit fixes the present regression.
ldso/dynlink.c