This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Support command "catch syscall" properly on different targets
- From: Pedro Alves <palves at redhat dot com>
- To: Yao Qi <qiyaoltc at gmail dot com>, Sergio Durigan Junior <sergiodj at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Tue, 03 Mar 2015 12:29:02 +0000
- Subject: Re: [RFC] Support command "catch syscall" properly on different targets
- Authentication-results: sourceware.org; auth=none
- References: <1425047015-1906-1-git-send-email-qiyaoltc at gmail dot com> <877fv3kqx1 dot fsf at redhat dot com> <86lhjei8md dot fsf at gmail dot com>
On 03/03/2015 12:11 PM, Yao Qi wrote:
> Sergio Durigan Junior <sergiodj@redhat.com> writes:
>
>> You mean it's possible to use "catch syscall" on HP-UX targets? I
>> wonder how it works.
>
> Yes, that is what I meant, at least that is what I can tell from the
> source.
TARGET_WAITKIND_SYSCALL_ENTRY / TARGET_WAITKIND_SYSCALL_RETURN
was supported by the HP-UX target long before GNU/Linux gained
support. See inf-ttrace.c. However, I don't think "catch syscall"
itself ever did. inf_ttrace_enable_syscall_events is only used
for watchpoints. Not that I find we should go fix it, mind you.
In gdb 6.8, for example, we had:
/* Be careful not to try to gather much state about a thread
that's in a syscall. It's frequently a losing proposition. */
case TARGET_WAITKIND_SYSCALL_ENTRY:
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_ENTRY\n");
resume (0, TARGET_SIGNAL_0);
prepare_to_wait (ecs);
return;
/* Before examining the threads further, step this thread to
get it entirely out of the syscall. (We get notice of the
event when the thread is just on the verge of exiting a
syscall. Stepping one instruction seems to get it back
into user code.) */
case TARGET_WAITKIND_SYSCALL_RETURN:
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog, "infrun: TARGET_WAITKIND_SYSCALL_RETURN\n");
target_resume (ecs->ptid, 1, TARGET_SIGNAL_0);
prepare_to_wait (ecs);
return;
I'd guess once this step after TARGET_WAITKIND_SYSCALL_RETURN
finishes, watchpoints end up processed. Sounds like watchpoints
are broken on hpux then. Not that anyone really cares though...
Thanks,
Pedro Alves