[PATCH v3 09/37] nptl: Move __pthread_unwind_next into libc
Florian Weimer
fweimer@redhat.com
Wed Mar 17 20:33:53 GMT 2021
* Adhemerval Zanella:
> On 17/03/2021 16:54, Florian Weimer wrote:
>> * Adhemerval Zanella via Libc-alpha:
>>
>>> On 16/03/2021 14:29, Florian Weimer via Libc-alpha wrote:
>>>> It's necessary to stub out __libc_disable_asynccancel and
>>>> __libc_enable_asynccancel via rtld-stubbed-symbols because the new
>>>> direct references to the unwinder result in symbol conflicts when the
>>>> rtld exception handling from libc is linked in during the construction
>>>> of librtld.map.
>>>
>>> From where exactly these come from? The *assynccancel should not be
>>> generated for rtld-* objects.
>>
>> I think what happens is this: The libc.so objects that are used as a
>> starting point have them, so the reducer tries to link in those symbols,
>> and that fails with symbol conflicts.
>
> Right, but why doesn't it happen with other symbols that might be
> pulled as well? It not a blocker, but I am trying to understand why
> we are seeing this behavior with this change.
Ah, the explanation is quite trivial: We used to have a forwarder for
__pthread_unwind, and that acted as a firewall for the rtld symbol set
discovery. Now the forwarder is gone, so the implementation of
__pthread_unwind starts to matter.
Maybe I should stub out __pthread_unwind instead? But doing it for the
cancellation feels more natural.
Thanks,
Florian
More information about the Libc-alpha
mailing list