This is the mail archive of the libc-alpha@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] |
Hi! On 5 Oct 2012 17:39:33 -0000, hjl@sourceware.org wrote: > http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=9cee55856438b714fa1efa45d8b7c1857467f4ca > > commit 9cee55856438b714fa1efa45d8b7c1857467f4ca > Author: H.J. Lu <hjl.tools@gmail.com> > Date: Fri Oct 5 10:20:39 2012 -0700 > > Set up the data structures for vDSO in libc.a > + [BZ #14557] > + * elf/dl-support.c (_dl_sysinfo_map): New. > + Include "get-dynamic-info.h" and "setup-vdso.h". > + (_dl_non_dynamic_init): Call setup_vdso. > + * elf/dynamic-link.h: Don't include <assert.h>. > + (elf_get_dynamic_info): Moved to ... > + * elf/get-dynamic-info.h: Here. New file. > + * elf/dynamic-link.h: Include "get-dynamic-info.h". > + * elf/rtld.c (dl_main): Break out vDSO setup code into ... > + * elf/setup-vdso.h: Here. New file. > + * elf/rtld.c: Include "setup-vdso.h". > + (dl_main): Call setup_vdso. > diff --git a/elf/dl-support.c b/elf/dl-support.c > index 2bb468a..424ca6d 100644 > --- a/elf/dl-support.c > +++ b/elf/dl-support.c > @@ -161,6 +161,11 @@ uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT; > #if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO > /* Address of the ELF headers in the vsyscall page. */ > const ElfW(Ehdr) *_dl_sysinfo_dso; > + > +struct link_map *_dl_sysinfo_map; > + > +# include "get-dynamic-info.h" > +# include "setup-vdso.h" > #endif > > /* During the program run we must not modify the global data of > @@ -266,6 +271,10 @@ _dl_non_dynamic_init (void) > > _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1; > > + /* Set up the data structures for the system-supplied DSO early, > + so they can influence _dl_init_paths. */ > + setup_vdso (NULL, NULL); For Â!(defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO)Â (as it is on GNU Hurd), this causes: dl-support.c: In function '_dl_non_dynamic_init': dl-support.c:277:3: warning: implicit declaration of function 'setup_vdso' [-Wimplicit-function-declaration] setup_vdso (NULL, NULL); ^ [...] [...]/libc.a(dl-support.o): In function `_dl_non_dynamic_init': [...]/elf/dl-support.c:277: undefined reference to `setup_vdso' collect2: error: ld returned 1 exit status make[2]: *** [[...]/elf/sln] Error 1 Is the following a suitable minimal fix, given that setup_vdso itself only gets active for Âdefined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSOÂ? diff --git elf/dl-support.c elf/dl-support.c index 722b1b9..5688ecd 100644 --- elf/dl-support.c +++ elf/dl-support.c @@ -166,8 +166,8 @@ const ElfW(Ehdr) *_dl_sysinfo_dso; struct link_map *_dl_sysinfo_map; # include "get-dynamic-info.h" -# include "setup-vdso.h" #endif +#include "setup-vdso.h" /* During the program run we must not modify the global data of loaded shared object simultanously in two threads. Therefore we Also, I generally don't understand the "#include discipline" of the new files elf/get-dynamic-info.h and elf/setup-vdso.h -- there are no #includes in these. But it seems that other files in elf/ also don't always #include what they use, so rely on what they implicitly get. GrÃÃe, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |