summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/map_object.c
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2005-02-27 12:55:40 +0000
committerdfr <dfr@FreeBSD.org>2005-02-27 12:55:40 +0000
commit0c34e7e727f487797ac2d25272d1d1a536d42a85 (patch)
treebc9d98ec067871de6297cc375f424591f69b4c1a /libexec/rtld-elf/map_object.c
parent5d9bc16368a571a4efed23a179ae62e3a0610008 (diff)
downloadFreeBSD-src-0c34e7e727f487797ac2d25272d1d1a536d42a85.zip
FreeBSD-src-0c34e7e727f487797ac2d25272d1d1a536d42a85.tar.gz
Attempt to free any static TLS space used by a shared library when it
is unloaded. This allows applications which load and unload libraries like libGL.so.1 several times to work properly. MFC after: 2 days
Diffstat (limited to 'libexec/rtld-elf/map_object.c')
-rw-r--r--libexec/rtld-elf/map_object.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 33fb9a6..2b1ef24 100644
--- a/libexec/rtld-elf/map_object.c
+++ b/libexec/rtld-elf/map_object.c
@@ -305,6 +305,9 @@ obj_free(Obj_Entry *obj)
{
Objlist_Entry *elm;
+ if (obj->tls_done) {
+ free_tls_offset(obj);
+ }
free(obj->path);
while (obj->needed != NULL) {
Needed_Entry *needed = obj->needed;
OpenPOWER on IntegriCloud