This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.14-300-g48b67d7
- From: schwab at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 14 Sep 2011 11:36:41 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.14-300-g48b67d7
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 48b67d71ec677d1b3168e52a68b644784cead604 (commit)
from 1ae12c758f8e40ed16320fea4c928974d2274474 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=48b67d71ec677d1b3168e52a68b644784cead604
commit 48b67d71ec677d1b3168e52a68b644784cead604
Author: Andreas Schwab <schwab@redhat.com>
Date: Wed Sep 14 12:12:25 2011 +0200
Also relocate in dependency order when doing symbol dependency testing
diff --git a/ChangeLog b/ChangeLog
index c004edf..db9bdbb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-09-14 Andreas Schwab <schwab@redhat.com>
+
+ * elf/rtld.c (dl_main): Also relocate in dependency order when
+ doing symbol dependency testing.
+
2011-09-13 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela):
diff --git a/elf/rtld.c b/elf/rtld.c
index 764140d..324d979 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2027,24 +2027,21 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
{
/* We have to do symbol dependency testing. */
struct relocate_args args;
- struct link_map *l;
+ unsigned int i;
args.reloc_mode = GLRO(dl_lazy) ? RTLD_LAZY : 0;
- l = main_map;
- while (l->l_next != NULL)
- l = l->l_next;
- do
+ i = main_map->l_searchlist.r_nlist;
+ while (i-- > 0)
{
+ struct link_map *l = main_map->l_initfini[i];
if (l != &GL(dl_rtld_map) && ! l->l_faked)
{
args.l = l;
_dl_receive_error (print_unresolved, relocate_doit,
&args);
}
- l = l->l_prev;
}
- while (l != NULL);
if ((GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)
&& rtld_multiple_ref)
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 5 +++++
elf/rtld.c | 11 ++++-------
2 files changed, 9 insertions(+), 7 deletions(-)
hooks/post-receive
--
GNU C Library master sources