This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]