diff options
Diffstat (limited to 'main/libc0.9.32/uclibc-dlclose-fix.patch')
-rw-r--r-- | main/libc0.9.32/uclibc-dlclose-fix.patch | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/main/libc0.9.32/uclibc-dlclose-fix.patch b/main/libc0.9.32/uclibc-dlclose-fix.patch new file mode 100644 index 0000000000..c99cd2526c --- /dev/null +++ b/main/libc0.9.32/uclibc-dlclose-fix.patch @@ -0,0 +1,14 @@ +--- ./ldso/libdl/libdl.c.orig ++++ ./ldso/libdl/libdl.c +@@ -951,8 +951,8 @@ + + dtv_t *dtv = THREAD_DTV (); + +- _dl_assert(!(dtv[tls_lmap->l_tls_modid].pointer.is_static)); +- if (dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) { ++ if (!(dtv[tls_lmap->l_tls_modid].pointer.is_static) && ++ dtv[tls_lmap->l_tls_modid].pointer.val != TLS_DTV_UNALLOCATED) { + /* Note that free is called for NULL is well. We + deallocate even if it is this dtv entry we are + supposed to load. The reason is that we call + |