V5 [PATCH 2/2] ldconfig/x86: Add ISA level check to glibc-hwcaps
Florian Weimer
fweimer@redhat.com
Tue Dec 8 15:15:56 GMT 2020
* 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.)
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