[PATCH 1/3] x86: Initialize CPU info via IFUNC relocation [BZ 26203]

Florian Weimer fweimer@redhat.com
Fri Sep 25 12:55:23 GMT 2020


* H. J. Lu:

> On Mon, Sep 21, 2020 at 1:21 AM Florian Weimer <fweimer@redhat.com> wrote:
>>
>> * H. J. Lu:
>>
>> >> Putting this data into _rtld_global_ro is not correct if it is required
>> >> after static dlopen.  The current static dlopen approach simply does not
>> >> support that.  You can only assume that libc.so has been initialized
>> >> after static dlopen.
>>
>> > Unless it is removed,  _rtld_global_ro is the right place.  _rtld_global_ro
>> > is initialized by dynamic relocation.  My patch does it.
>>
>> It initializes only part of it.  I find this rather confusing.
>>
>> Why is this data in ld.so in the first place?
>
> I put it in ld.so with
>
> commit e2e4f56056adddc3c1efe676b40a4b4f2453103b
> Author: H.J. Lu <hjl.tools@gmail.com>
> Date:   Thu Aug 13 03:37:47 2015 -0700
>
>     Add _dl_x86_cpu_features to rtld_global
>
>     This patch adds _dl_x86_cpu_features to rtld_global in x86 ld.so
>     and initializes it early before __libc_start_main is called so that
>     cpu_features is always available when it is used and we can avoid
>     calling __init_cpu_features in IFUNC selectors.
>
> which made many things possible, including CET support and
>
> commit bea3f92405f705684275bffee954cafe84ffb09d
> Author: H.J. Lu <hjl.tools@gmail.com>
> Date:   Sun Oct 22 08:24:00 2017 -0700
>
>     x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve [BZ #21265]
>
>     In _dl_runtime_resolve, use fxsave/xsave/xsavec to preserve all vector,
>     mask and bound registers.  It simplifies _dl_runtime_resolve and supports
>     different calling conventions.  ld.so code size is reduced by more than
>     1 KB.  However, use fxsave/xsave/xsavec takes a little bit more cycles
>     than saving and restoring vector and bound registers individually.

Hmm.  I think the current setup is not really ideal, but I guess it's
what we've got now.  I have not reviewed your entire patch series, but I
won't object to this aspect.  (I hope to review it soon, but if anyone
else wants to step in, that's okay, too.)

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill



More information about the Libc-alpha mailing list