This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] aarch64: simplify the DT_AARCH64_VARIANT_PCS handling code


On 10/07/2019 20:29, Carlos O'Donell wrote:
> On 7/10/19 1:21 PM, Szabolcs Nagy wrote:
>> On 09/07/2019 13:55, Szabolcs Nagy wrote:
>>> Remove unnecessary variant_pcs field: the dynamic tag can be checked
>>> directly.
>>>
>>> I'll commit this tomorrow unless there are comments.
>>> Then backport it with the variant pcs support to release branches
>>> https://sourceware.org/ml/libc-alpha/2019-05/msg00523.html
>>
>> i was about to back port this but i wonder if
>> glibc has policy that a release branch cannot
>> change libc internal abi between dynamic linker
>> and lib*.so to allow reliable updates?
> 
> Correct.
> 
> If possible it's something I would like to avoid.
> 
> I have some ideas for narrowing the window in Fedora (using a symlink
> tree and flipping a prent symlink), but it's still a window.
> 
> How strong is your need to backport this?

i really want to make older glibc work with sve calls.

currently it's a hard to debug failure whenever a new
compiler+linker is used on an existing distro.

in principle there is no need to change the link_map
struct, DT_AARCH64_VARIANT_PCS is an optimization for
load time reloc processing: symbol table check can be
avoided for untagged binaries (they don't do sve calls).

so one solutions is to just do the symbol table check
unconditionally (slight load time regression with lazy
binding).

(alternatively it is also possible to store the one
bit information somewhere else in link_map without
changing its layout, but that would be a huge hack).

> 
>> this patch changes the size of map->l_info array.
>>
>>>
>>> 2019-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>
>>>
>>>     * sysdeps/aarch64/dl-machine.h (elf_machine_runtime_setup): Remove the
>>>     DT_AARCH64_VARIANT_PCS check.
>>>     (elf_machine_lazy_rel): Use l_info[DT_AARCH64 (VARIANT_PCS)].
>>>     * sysdeps/aarch64/linkmap.h (struct link_map_machine): Remove
>>>     variant_pcs.
>>>
>>
> 
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]