mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-26 04:31:03 +00:00
elf: Record libc.so link map when it is the main program (bug 20972)
Otherwise, it will not participate in the dependency sorting.
Fixes commit 9ffa50b26b
("elf: Include libc.so.6 as main program in dependency sort
(bug 20972)").
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
parent
7366cb03f8
commit
4d0985543f
11
elf/rtld.c
11
elf/rtld.c
@ -49,6 +49,7 @@
|
||||
#include <libc-early-init.h>
|
||||
#include <dl-main.h>
|
||||
#include <list.h>
|
||||
#include <gnu/lib-names.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@ -1609,6 +1610,16 @@ dl_main (const ElfW(Phdr) *phdr,
|
||||
{
|
||||
/* Extract the contents of the dynamic section for easy access. */
|
||||
elf_get_dynamic_info (main_map, NULL);
|
||||
|
||||
/* If the main map is libc.so, update the base namespace to
|
||||
refer to this map. If libc.so is loaded later, this happens
|
||||
in _dl_map_object_from_fd. */
|
||||
if (main_map->l_info[DT_SONAME] != NULL
|
||||
&& (strcmp (((const char *) D_PTR (main_map, l_info[DT_STRTAB])
|
||||
+ main_map->l_info[DT_SONAME]->d_un.d_val), LIBC_SO)
|
||||
== 0))
|
||||
GL(dl_ns)[LM_ID_BASE].libc_map = main_map;
|
||||
|
||||
/* Set up our cache of pointers into the hash table. */
|
||||
_dl_setup_hash (main_map);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user