> -----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
ool-glibc.patch
Description: ool-glibc.patch