This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 0/2] nptl: Update struct pthread_unwind_buf
On Sun, Feb 25, 2018 at 5:49 AM, Florian Weimer <fw@deneb.enyo.de> wrote:
> * H. J. Lu:
>
>> On Sun, Feb 25, 2018 at 5:31 AM, Florian Weimer <fw@deneb.enyo.de> wrote:
>>> * H. J. Lu:
>>>
>>>> libpthread cancellation implementation passes cancel_jmp_buf to
>>>> libgcc unwinder,
>>>
>>> Oh. Where does it do that? If you mean _Unwind_ForcedUnwind, I think
>>> that's just an opaque closure argument for the callback.
>>
>> Yes. Libgcc unwinder needs to deal with it.
>
> Please point me to the code. Thanks.
sysdeps/nptl/unwind-forcedunwind.c has
_Unwind_Reason_Code
_Unwind_ForcedUnwind (struct _Unwind_Exception *exc, _Unwind_Stop_Fn stop,
void *stop_argument)
{
if (__glibc_unlikely (libgcc_s_handle == NULL))
pthread_cancel_init ();
else
atomic_read_barrier ();
_Unwind_Reason_Code (*forcedunwind)
(struct _Unwind_Exception *, _Unwind_Stop_Fn, void *)
= libgcc_s_forcedunwind;
PTR_DEMANGLE (forcedunwind);
return forcedunwind (exc, stop, stop_argument);
}
--
H.J.