r4623 - in glibc-package/branches/eglibc-2.13/debian: . patches/any
Author: aurel32
Date: 2011-05-01 14:58:48 +0000 (Sun, 01 May 2011)
New Revision: 4623
Added:
glibc-package/branches/eglibc-2.13/debian/patches/any/local-dl-deps.diff
Modified:
glibc-package/branches/eglibc-2.13/debian/changelog
Log:
* Add patches/any/local-dl-deps.diff to workaround assert triggered by
some binaries. Closes: #624515.
Modified: glibc-package/branches/eglibc-2.13/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.13/debian/changelog 2011-05-01 14:41:00 UTC (rev 4622)
+++ glibc-package/branches/eglibc-2.13/debian/changelog 2011-05-01 14:58:48 UTC (rev 4623)
@@ -155,6 +155,8 @@
* Add patches/any/cvs-fopen.diff to fix fopen() with 7 bytes string.
* Add patches/amd64/cvs-memset.diff to fix memset() on amd64 for
misaligned blocks larger than 144 Bytes.
+ * Add patches/any/local-dl-deps.diff to workaround assert triggered by
+ some binaries. Closes: #624515.
[ Samuel Thibault ]
* Add patches/any/cvs-glro_dl_debug_mask.diff to fix build without
Added: glibc-package/branches/eglibc-2.13/debian/patches/any/local-dl-deps.diff
===================================================================
--- glibc-package/branches/eglibc-2.13/debian/patches/any/local-dl-deps.diff (rev 0)
+++ glibc-package/branches/eglibc-2.13/debian/patches/any/local-dl-deps.diff 2011-05-01 14:58:48 UTC (rev 4623)
@@ -0,0 +1,33 @@
+diff --git a/elf/dl-close.c b/elf/dl-close.c
+index efb2b58..3991e65 100644
+--- a/elf/dl-close.c
++++ b/elf/dl-close.c
+@@ -231,7 +231,8 @@ _dl_close_worker (struct link_map *map)
+ }
+
+ /* Sort the entries. */
+- _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid);
++ if (nloaded > 1)
++ _dl_sort_fini (ns->_ns_loaded, maps, nloaded, used, nsid);
+
+ /* Call all termination functions at once. */
+ #ifdef SHARED
+diff --git a/elf/dl-deps.c b/elf/dl-deps.c
+index d3c27f1..ed27090 100644
+--- a/elf/dl-deps.c
++++ b/elf/dl-deps.c
+@@ -623,11 +623,11 @@ Filters not supported with LD_TRACE_PRELINKING"));
+
+ /* We can skip looking for the binary itself which is at the front
+ of the search list. */
+- assert (nlist > 1);
++ assert (nlist > 0);
+ i = 1;
+ bool seen[nlist];
+ memset (seen, false, nlist * sizeof (seen[0]));
+- while (1)
++ while (nlist > 1)
+ {
+ /* Keep track of which object we looked at this round. */
+ seen[i] = true;
+
Reply to: