On Tue, Jan 19, 2021 at 5:51 AM Adhemerval Zanella via Libc-alpha wrote: > > > > On 18/01/2021 13:24, Szabolcs Nagy via Libc-alpha wrote: > > From: "H.J. Lu" > > > > In static PIE, set the default _dl_sysinfo in _dl_aux_init, instead of > > using the RELATIVE relocation to intialize it. > > > > This is needed for fixing bug 27072 on x86. > > --- > > elf/dl-support.c | 12 +++++++++++- > > 1 file changed, 11 insertions(+), 1 deletion(-) > > > > diff --git a/elf/dl-support.c b/elf/dl-support.c > > index 384080dd80..5acd59290f 100644 > > --- a/elf/dl-support.c > > +++ b/elf/dl-support.c > > @@ -200,7 +200,12 @@ struct dl_scope_free_list *_dl_scope_free_list; > > > > #ifdef NEED_DL_SYSINFO > > /* Needed for improved syscall handling on at least x86/Linux. */ > > -uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT; > > +uintptr_t _dl_sysinfo > > +/* NB: Avoid RELATIVE relocation in static PIE. */ > > +# ifndef BUILD_PIE_DEFAULT > > + = DL_SYSINFO_DEFAULT > > +# endif > > +; > > #endif > > #ifdef NEED_DL_SYSINFO_DSO > > /* Address of the ELF headers in the vsyscall page. */ > > @@ -238,6 +243,11 @@ _dl_aux_init (ElfW(auxv_t) *av) > > uid_t uid = 0; > > gid_t gid = 0; > > > > +#if defined NEED_DL_SYSINFO && BUILD_PIE_DEFAULT > > + /* NB: Avoid RELATIVE relocation in static PIE. */ > > + GL(dl_sysinfo) = DL_SYSINFO_DEFAULT; > > +#endif > > + > > Couldn't we make it the default instead? > > > _dl_auxv = av; > > for (; av->a_type != AT_NULL; ++av) > > switch (av->a_type) > > Like this? -- H.J.