]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 16 Jun 2003 07:00:05 +0000 (07:00 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 16 Jun 2003 07:00:05 +0000 (07:00 +0000)
* elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic
linker's map.
* elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the
dynamic linker's map.

ChangeLog
elf/dl-iteratephdr.c
elf/rtld.c

index d6a76ce3e16f00dc3f41df62305ca6bf1f62db36..abbe3a8bd278c6fd9534d416f3f1aae39facdb06 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
 
+       * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic
+       linker's map.
+       * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the
+       dynamic linker's map.
+
        Fix cancellation point handling wrt exception based cleanup.
        * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions.
        * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c
index c374baaa9818910781372c4ac92f240f73dbf669..dccaf0aff8c59510a3c2b620857aba1368717ac4 100644 (file)
@@ -1,5 +1,5 @@
 /* Get loaded objects program headers.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
 
@@ -36,9 +36,6 @@ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
 
   for (l = GL(dl_loaded); l != NULL; l = l->l_next)
     {
-      /* Skip the dynamic linker.  */
-      if (l->l_phdr == NULL)
-       continue;
       info.dlpi_addr = l->l_addr;
       info.dlpi_name = l->l_name;
       info.dlpi_phdr = l->l_phdr;
index 367a9dcba96cf499b0d501ed692c5827aa7ded58..5347a5f7b8f175ff7dd6eebb20c91e1665e537c0 100644 (file)
@@ -931,6 +931,13 @@ of this helper program; chances are you did not intend to run this program.\n\
   GL(dl_rtld_map).l_prev = GL(dl_loaded);
   ++GL(dl_nloaded);
 
+  /* Set up the program header information for the dynamic linker
+     itself.  It is needed in the dl_iterate_phdr() callbacks.  */
+  ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map.l_addr);
+  GL(dl_rtld_map).l_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map.l_addr)
+                                          + rtld_ehdr->e_phoff);
+  GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum;
+
   /* We have two ways to specify objects to preload: via environment
      variable and via the file /etc/ld.so.preload.  The latter can also
      be used when security is enabled.  */