mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-10 05:03:06 +03:00
Preserve link time dependencies over relocation dependencies
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2011-10-20 Andreas Schwab <schwab@redhat.com>
|
||||||
|
|
||||||
|
[BZ #12892]
|
||||||
|
* elf/dl-fini.c (_dl_sort_fini): Ignore relocation dependency if
|
||||||
|
it would create a cycle with a link time dependency.
|
||||||
|
|
||||||
2011-10-19 Ulrich Drepper <drepper@gmail.com>
|
2011-10-19 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
* sysdeps/x86_64/multiarch/rawmemchr.S: Small optimization to safe an
|
* sysdeps/x86_64/multiarch/rawmemchr.S: Small optimization to safe an
|
||||||
|
8
NEWS
8
NEWS
@@ -1,4 +1,4 @@
|
|||||||
GNU C Library NEWS -- history of user-visible changes. 2011-10-19
|
GNU C Library NEWS -- history of user-visible changes. 2011-10-20
|
||||||
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
|
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
|
||||||
See the end for copying conditions.
|
See the end for copying conditions.
|
||||||
|
|
||||||
@@ -9,9 +9,9 @@ Version 2.15
|
|||||||
|
|
||||||
* The following bugs are resolved with this release:
|
* The following bugs are resolved with this release:
|
||||||
|
|
||||||
6779, 6783, 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12907,
|
6779, 6783, 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12892,
|
||||||
12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, 13118,
|
12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114,
|
||||||
13123, 13134, 13138, 13150, 13179, 13192, 13268, 13291
|
13118, 13123, 13134, 13138, 13150, 13179, 13192, 13268, 13291
|
||||||
|
|
||||||
* New program pldd to list loaded object of a process
|
* New program pldd to list loaded object of a process
|
||||||
Implemented by Ulrich Drepper.
|
Implemented by Ulrich Drepper.
|
||||||
|
@@ -100,7 +100,17 @@ _dl_sort_fini (struct link_map **maps, size_t nmaps, char *used, Lmid_t ns)
|
|||||||
/* Look through the relocation dependencies of the object. */
|
/* Look through the relocation dependencies of the object. */
|
||||||
while (m-- > 0)
|
while (m-- > 0)
|
||||||
if (__builtin_expect (relmaps[m] == thisp, 0))
|
if (__builtin_expect (relmaps[m] == thisp, 0))
|
||||||
goto move;
|
{
|
||||||
|
/* If a cycle exists with a link time dependency,
|
||||||
|
preserve the latter. */
|
||||||
|
struct link_map **runp = thisp->l_initfini;
|
||||||
|
if (runp != NULL)
|
||||||
|
while (*runp != NULL)
|
||||||
|
if (__builtin_expect (*runp++ == maps[k], 0))
|
||||||
|
goto ignore;
|
||||||
|
goto move;
|
||||||
|
}
|
||||||
|
ignore:;
|
||||||
}
|
}
|
||||||
|
|
||||||
--k;
|
--k;
|
||||||
|
Reference in New Issue
Block a user