On 03/29/2018 08:00 AM, Florian Weimer wrote: > This patch performs lazy initialization of the relevant CPUID feature > register value. It will needlessly invoke the CPUID determination code > on architectures which lack CPUID support or support for the feature > register, but I think it's not worth to avoid the complexity for that. > > I verified manually that the CMPXCHG16B implementation is still selected > for a 128-bit load after the change. I don't know how to write an > automated test for that. > > Thanks, > Florian > > pr60790.patch > > > Index: libatomic/ChangeLog > =================================================================== > --- libatomic/ChangeLog (revision 258952) > +++ libatomic/ChangeLog (working copy) > @@ -1,3 +1,18 @@ > +2018-03-29 Florian Weimer <fwei...@tor.usersys.redhat.com> > + > + PR libgcc/60790 > + x86: Do not assume ELF constructors run before IFUNC resolvers. > + * config/x86/host-config.h (libat_feat1_ecx, libat_feat1_edx): > + Remove declarations. > + (__libat_feat1, __libat_feat1_init): Declare. > + (FEAT1_REGISTER): Define. > + (load_feat1): New function. > + (IFUNC_COND_1): Adjust. > + * config/x86/init.c (libat_feat1_ecx, libat_feat1_edx) > + (init_cpuid): Remove definitions. > + (__libat_feat1): New variable. > + (__libat_feat1_init): New function. OK.
Do you have write access to the GCC repository? If not I can commit for you. jeff