This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! 1) l->ld needs to be relocated as well (I did not catch this up in my previous testing, because vDSO was mapped both in the new place and in the old location) 2) if kernel provides just AT_SYSINFO_EHDR but not AT_SYSINFO, ld.so would segfault. 2004-02-27 Jakub Jelinek <jakub@redhat.com> * elf/rtld.c (dl_main): Adjust l->l_ld of the vDSO by l->l_addr. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Only set GL(dl_sysinfo) if non-zero. --- libc/elf/rtld.c.jj 2004-02-27 13:51:54.000000000 +0100 +++ libc/elf/rtld.c 2004-02-27 14:56:05.000000000 +0100 @@ -1246,6 +1246,7 @@ ERROR: ld.so: object '%s' from %s cannot l->l_map_start = (ElfW(Addr)) GL(dl_sysinfo_dso); l->l_addr = l->l_map_start - l->l_addr; l->l_map_end += l->l_addr; + l->l_ld = (void *) ((ElfW(Addr)) l->l_ld + l->l_addr); elf_get_dynamic_info (l, dyn_temp); _dl_setup_hash (l); l->l_relocated = 1; --- libc/sysdeps/generic/dl-sysdep.c.jj 2004-02-27 17:08:24.000000000 +0100 +++ libc/sysdeps/generic/dl-sysdep.c 2004-02-27 17:18:39.992891935 +0100 @@ -201,7 +201,7 @@ _dl_sysdep_start (void **start_argptr, #if defined NEED_DL_SYSINFO /* Only set the sysinfo value if we also have the vsyscall DSO. */ - if (GL(dl_sysinfo_dso) != 0) + if (GL(dl_sysinfo_dso) != 0 && new_sysinfo) GL(dl_sysinfo) = new_sysinfo; #endif Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |