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