This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

Re: [PATCH] PR libgcc/60790: Avoid IFUNC resolver access to uninitialized data


On 3/19/19 9:00 AM, Florian Weimer wrote:
> * Florian Weimer:
> 
>> * Jeff Law:
>>
>>> 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  <fweimer@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.
>>
>> Here is the backport to gcc-8-branch.
> 
> Ping?  <https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00524.html>
OK for the branch as well.  I didn't know you were waiting on me :-)
jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]