This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v7 3/8] Use xml-syscall to compare syscall numbers in arm_linux_sigreturn_return-addr.
- From: Pedro Alves <palves at redhat dot com>
- To: Antoine Tremblay <antoine dot tremblay at ericsson dot com>, Yao Qi <qiyaoltc at gmail dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Fri, 11 Dec 2015 13:20:34 +0000
- Subject: Re: [PATCH v7 3/8] Use xml-syscall to compare syscall numbers in arm_linux_sigreturn_return-addr.
- Authentication-results: sourceware.org; auth=none
- References: <1449583641-18156-1-git-send-email-antoine dot tremblay at ericsson dot com> <1449583641-18156-4-git-send-email-antoine dot tremblay at ericsson dot com> <86io45ql3x dot fsf at gmail dot com> <566ABA91 dot 5000508 at redhat dot com> <566ABB44 dot 3080004 at gmail dot com> <566ABC0C dot 10101 at redhat dot com> <566AC23B dot 6060800 at ericsson dot com> <566AC5EA dot 4090204 at redhat dot com> <566AC9F2 dot 8090906 at ericsson dot com>
On 12/11/2015 01:04 PM, Antoine Tremblay wrote:
>
>
> On 12/11/2015 07:47 AM, Pedro Alves wrote:
>> On 12/11/2015 12:31 PM, Antoine Tremblay wrote:
>>>
>>>
>>> On 12/11/2015 07:05 AM, Pedro Alves wrote:
>>>> On 12/11/2015 12:02 PM, Yao Qi wrote:
>>>>> On 11/12/15 11:59, Pedro Alves wrote:
>>>>>> but then you might as well just do:
>>>>>>
>>>>>> #define ARM_SIGRETURN 119
>>>>>
>>>>> How about using __NR_sigreturn and __NR_rt_sigreturn directly? like
>>>>> what patch #6 does.
>>>>
>>>> Those are host/native macros. Only make sense for the running host.
>>>> Can't use that in a tdep file, like arm-linux-tdep.c. Otherwise, e.g.,
>>>> a x86-hosted cross debugger would be using the x86 __NR_sigreturn, etc.
>>>>
>>>
>>> Exactly that's why I use those only in GDBServer.
>>
>> Hmm, actually, that sounds wrong.
>>
>> What about Aarch64 gdbserver debugging Aarch32?
>>
>> I see that the new code in question in patch #6 is in gdbserver/linux-arm-low.c,
>> which is not built on Aarch64, but, shouldn't that new arm_sigreturn_next_pc
>> code be used in the biarch scenario as well?
>>
>
> This is only used if we need software single stepping, I think in that
> case hardware single stepping will be used on aarch64 even if stepping
> over an arm32 program, Yao can confirm ?
Ah, I think you're right.
>
>
>> If you just made that 32-bit-specific code compile on Aarch64 it would
>> be compiling against Aarch64's __NR_sigreturn, which I'd assume is wrong for Aarch32.
>>
>>>
>
> Looking at the kernel code in linux/arch/arm64 I see :
>
> include/asm/unistd.h:#define __NR_compat_sigreturn 119
> include/asm/unistd.h:#define __NR_compat_rt_sigreturn 173
>
> include/asm/unistd32.h:#define __NR_sigreturn 119
> include/asm/unistd32.h:__SYSCALL(__NR_sigreturn,
> compat_sys_sigreturn_wrapper)
>
> include/asm/unistd32.h:#define __NR_rt_sigreturn 173
> include/asm/unistd32.h:__SYSCALL(__NR_rt_sigreturn,
> compat_sys_rt_sigreturn_wrapper)
>
> So I think it's ok... but I can't compile on aarch64 at the moment.
>From that, it seems to be that Aarch64 64-bit doesn't even
have __NR_sigreturn. The one we see above is in unistd32.h,
which should mean it's only included when compiling 32-bit code.
So it seems like if you tried to reference __NR_sigreturn on
Aarch64, you'd get a build failure.
Note there are Aarch64 Ubuntu machines on the gcc compile farm.
But, it's moot if we do hardware stepping.
Thanks,
Pedro Alves