V5 [PATCH 2/2] ldconfig/x86: Add ISA level check to glibc-hwcaps

H.J. Lu hjl.tools@gmail.com
Tue Dec 8 15:31:35 GMT 2020


On Tue, Dec 8, 2020 at 7:16 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu:
>
> >> > For each file entry for a shared object, the hwcap field has been used by
> >> > DL_CACHE_HWCAP_EXTENSION for glibc-hwcaps.  Are you suggesting
> >> > to add another file entry for the same shared object to store ISA level
> >> > requirement?
> >>
> >> It's a 64-bit field.  We do this:
> >>
> >> /* This bit in the hwcap field of struct file_entry_new indicates that
> >>    the lower 32 bits contain an index into the
> >>    cache_extension_tag_glibc_hwcaps section.  Older glibc versions do
> >>    not know about this HWCAP bit, so they will ignore these
> >>    entries.  */
> >> #define DL_CACHE_HWCAP_EXTENSION (1ULL << 62)
> >>
> >> /* Return true if the ENTRY->hwcap value indicates that
> >>    DL_CACHE_HWCAP_EXTENSION is used.  */
> >> static inline bool
> >> dl_cache_hwcap_extension (struct file_entry_new *entry)
> >> {
> >>   /* If DL_CACHE_HWCAP_EXTENSION is set, but other bits as well, this
> >>      is a different kind of extension.  */
> >>   return (entry->hwcap >> 32) == (DL_CACHE_HWCAP_EXTENSION >> 32);
> >> }
> >>
> >> So we can use a different bit pattern involving DL_CACHE_HWCAP_EXTENSION
> >> to express something else.  In particular, only the lower 32 bits are
> >> currently used as an index.
> >
> > So bits 33-47 can be used for ISA level requirement.  This should support
> > 65536 ISA levels.
>
> The question is whether the ISA levels and the glibc-hwcaps name are
> used in parallel.  If not, we can use  (1ULL << 62) | (1ULL << 32) as
> the marker bits and a 32-bit index in the lower half.
>
> (I do not think this is necessarily relevant for levels, but it could be
> used for locating objects according to other criteria.)
>

I think ISA level and glibc-hwcaps should go together.

-- 
H.J.


More information about the Libc-alpha mailing list