diff options
author | Alexey Neyman <stilor@att.net> | 2017-12-02 23:30:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-02 23:30:38 (GMT) |
commit | d917a29865876b913fe2939ee2a0728145e8543a (patch) | |
tree | 4e048ed57988306696efa3c5b81a80d48030e913 /packages/glibc/2.21/0011-dlclose-assert.patch | |
parent | e832b9b220f90b11b893e2815ceb37ec2b708683 (diff) | |
parent | 98bc4decdeab1361bdc585c86591718fb08c8ffb (diff) |
Merge pull request #874 from stilor/renumber-update-patches
Renumber & update patches
Diffstat (limited to 'packages/glibc/2.21/0011-dlclose-assert.patch')
-rw-r--r-- | packages/glibc/2.21/0011-dlclose-assert.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/glibc/2.21/0011-dlclose-assert.patch b/packages/glibc/2.21/0011-dlclose-assert.patch new file mode 100644 index 0000000..4a9de10 --- /dev/null +++ b/packages/glibc/2.21/0011-dlclose-assert.patch @@ -0,0 +1,42 @@ +commit 2bd2cad9e8a410643e80efa0b15f6f2882e1271b +Author: Roland McGrath <roland@hack.frob.com> +Date: Fri Apr 17 14:29:40 2015 -0700 + + Avoid confusing compiler with dynamically impossible statically invalid dereference in _dl_close_worker. + +--- + elf/dl-close.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +--- a/elf/dl-close.c ++++ b/elf/dl-close.c +@@ -641,9 +641,16 @@ + DL_UNMAP (imap); + + /* Finally, unlink the data structure and free it. */ +- if (imap->l_prev != NULL) +- imap->l_prev->l_next = imap->l_next; +- else ++#if DL_NNS == 1 ++ /* The assert in the (imap->l_prev == NULL) case gives ++ the compiler license to warn that NS points outside ++ the dl_ns array bounds in that case (as nsid != LM_ID_BASE ++ is tantamount to nsid >= DL_NNS). That should be impossible ++ in this configuration, so just assert about it instead. */ ++ assert (nsid == LM_ID_BASE); ++ assert (imap->l_prev != NULL); ++#else ++ if (imap->l_prev == NULL) + { + assert (nsid != LM_ID_BASE); + ns->_ns_loaded = imap->l_next; +@@ -652,6 +659,9 @@ + we leave for debuggers to examine. */ + r->r_map = (void *) ns->_ns_loaded; + } ++ else ++#endif ++ imap->l_prev->l_next = imap->l_next; + + --ns->_ns_nloaded; + if (imap->l_next != NULL) |