This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 8/8] powerpc: Fix signal handling in backtrace
On 09/05/2017 09:11, Tulio Magno Quites Machado Filho wrote:
> Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
>
>> Now with read consolidation which uses SYSCALL_CANCEL macro, a frame
>> pointer is created in the syscall code and this makes the powerpc
>> backtrace obtain a bogus entry for the signal handling patch.
>>
>> It is because it does not setup the correct frame pointer register
>> (r1) based on the saved value from the kernel sigreturn. It was not
>> failing because the syscall frame pointer register was the same one
>> for the next frame (the function that actually called the syscall).
>>
>> This patch fixes it by setup the next stack frame using the saved
>> one by the kernel sigreturn. It fixes tst-backtrace{5,6} after
>> the read consolidation patch.
>>
>> Checked on powerpc-linux-gnu and powerpc64le-linux-gnu.
>>
>> * sysdeps/powerpc/powerpc32/backtrace.c (is_sigtramp_address): Use
>> void* for argument type and use VDSO_SYMBOL macro.
>> (is_sigtramp_address_rt): Likewise.
>> (__backtrace): Setup expected frame pointer address for signal
>> handling.
>> * sysdeps/powerpc/powerpc32/backtrace.c (is_sigtramp_address): Use
>
> The files are duplicated in the ChangeLog.
>
> Looks good to me with that fix as soon as patch #4 is integrated.
>
> Thanks!
>
Second item should be sysdeps/powerpc/powerpc64/backtrace.c, I will fix.
Thanks.