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