diff options
author | dfr <dfr@FreeBSD.org> | 2005-02-27 12:55:40 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2005-02-27 12:55:40 +0000 |
commit | 0c34e7e727f487797ac2d25272d1d1a536d42a85 (patch) | |
tree | bc9d98ec067871de6297cc375f424591f69b4c1a /libexec/rtld-elf/map_object.c | |
parent | 5d9bc16368a571a4efed23a179ae62e3a0610008 (diff) | |
download | FreeBSD-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.c | 3 |
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; |