GNU C Library master sources branch, master, updated. glibc-2.14-211-g2bc1743

schwab@sourceware.org schwab@sourceware.org
Tue Aug 30 14:49:00 GMT 2011


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  2bc174332ba6ddbd1b855dced33889bef56e8ba3 (commit)
      from  fbeb5f4db12dccb985ee10eb87fe00b46562b796 (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=2bc174332ba6ddbd1b855dced33889bef56e8ba3

commit 2bc174332ba6ddbd1b855dced33889bef56e8ba3
Author: Andreas Schwab <schwab@redhat.com>
Date:   Tue Aug 30 15:37:54 2011 +0200

    Relocate objects in dependency order

diff --git a/ChangeLog b/ChangeLog
index 5adcddc..9cab80d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-08-30  Andreas Schwab  <schwab@redhat.com>
+
+	* elf/rtld.c (dl_main): Relocate objects in dependency order.
+
 2011-08-29  Jiri Olsa <jolsa@redhat.com>
 
 	* sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Fix cfi
diff --git a/elf/rtld.c b/elf/rtld.c
index 87bb5f0..4f6bbfd 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2255,13 +2255,12 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
       /* If we are profiling we also must do lazy reloaction.  */
       GLRO(dl_lazy) |= consider_profiling;
 
-      struct link_map *l = main_map;
-      while (l->l_next)
-	l = l->l_next;
-
       HP_TIMING_NOW (start);
-      do
+      unsigned i = main_map->l_searchlist.r_nlist;
+      while (i-- > 0)
 	{
+	  struct link_map *l = main_map->l_initfini[i];
+
 	  /* While we are at it, help the memory handling a bit.  We have to
 	     mark some data structures as allocated with the fake malloc()
 	     implementation in ld.so.  */
@@ -2280,10 +2279,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
 	  /* Add object to slot information data if necessasy.  */
 	  if (l->l_tls_blocksize != 0 && tls_init_tp_called)
 	    _dl_add_to_slotinfo (l);
-
-	  l = l->l_prev;
 	}
-      while (l);
       HP_TIMING_NOW (stop);
 
       HP_TIMING_DIFF (relocate_time, start, stop);

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog  |    4 ++++
 elf/rtld.c |   12 ++++--------
 2 files changed, 8 insertions(+), 8 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list