> -----Original Message-----
> From: Kyrylo Tkachov
> Sent: 06 May 2020 11:40
> To: Florian Weimer <fwei...@redhat.com>
> Cc: Joseph Myers <jos...@codesourcery.com>; Szabolcs Nagy
> <szabolcs.n...@arm.com>; gcc-patches@gcc.gnu.org; Jakub Jelinek
> <ja...@redhat.com>; Richard Biener <richard.guent...@gmail.com>
> Subject: RE: [PATCH][AArch64] Use __getauxval instead of getauxval in LSE
> detection code in libgcc
> 
> 
> 
> > -----Original Message-----
> > From: Florian Weimer <fwei...@redhat.com>
> > Sent: 06 May 2020 11:28
> > To: Kyrylo Tkachov <kyrylo.tkac...@arm.com>
> > Cc: Joseph Myers <jos...@codesourcery.com>; Szabolcs Nagy
> > <szabolcs.n...@arm.com>; gcc-patches@gcc.gnu.org; Jakub Jelinek
> > <ja...@redhat.com>; Richard Biener <richard.guent...@gmail.com>
> > Subject: Re: [PATCH][AArch64] Use __getauxval instead of getauxval in LSE
> > detection code in libgcc
> >
> > * Kyrylo Tkachov:
> >
> > > diff --git a/libgcc/config/aarch64/lse-init.c b/libgcc/config/aarch64/lse-
> init.c
> > > index 74acef25cce..57236610468 100644
> > > --- a/libgcc/config/aarch64/lse-init.c
> > > +++ b/libgcc/config/aarch64/lse-init.c
> > > @@ -29,19 +29,20 @@ see the files COPYING3 and COPYING.RUNTIME
> > respectively.  If not, see
> > >  _Bool __aarch64_have_lse_atomics
> > >    __attribute__((visibility("hidden"), nocommon));
> > >
> > > -/* Disable initialization of __aarch64_have_lse_atomics during bootstrap.
> > */
> > > -#if !defined(inhibit_libc) && defined(HAVE_SYS_AUXV_H)
> > > -# include <sys/auxv.h>
> > > +/* Gate availability of __getauxval on glibc.  All AArch64-supporting 
> > > glibc
> > > +   versions support it.  */
> > > +#ifdef __gnu_linux__
> > >
> > > -/* Disable initialization if the system headers are too old.  */
> > > -# if defined(AT_HWCAP) && defined(HWCAP_ATOMICS)
> > > +# define AT_HWCAP        16
> > > +# define HWCAP_ATOMICS   (1 << 8)
> > > +
> > > +unsigned long __getauxval (unsigned long);
> > >
> > >  static void __attribute__((constructor))
> > >  init_have_lse_atomics (void)
> > >  {
> > > -  unsigned long hwcap = getauxval (AT_HWCAP);
> > > +  unsigned long hwcap = __getauxval (AT_HWCAP);
> > >    __aarch64_have_lse_atomics = (hwcap & HWCAP_ATOMICS) != 0;
> > >  }
> > >
> > > -# endif /* HWCAP */
> > > -#endif /* inhibit_libc */
> > > +#endif /* __gnu_linux__  */
> >
> > GNU style is unsigned long int.
> 
> Thanks, I'll fix that.

Here is the updated patch for the record.
Jakub, richi, is this ok for the GCC 10 branch? 
Thanks,
Kyrill

> 
> >
> > Is __gnu_linux__ defined with musl?  It's not really GNU/Linux, after
> > all.  musl doesn't have __getauxval IIRC, so it would break the build
> > there.
> 
> I don't think it does (at least not with a git grep for it in the musl code).
> GCC doesn't define it for musl targets either. I see it defined for uclinux 
> for
> arm, not aarch64 though.
> 
> Thanks,
> Kyrill
> 
> >
> > (This is not a review of the patch. 8-)
> >
> > Thanks,
> > Florian

Attachment: ool-glibc.patch
Description: ool-glibc.patch

Reply via email to