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-211-g2bc1743


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


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