This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [obv] testsuite: disp-step-syscall.exp: Setup KFAIL for PR server/13796
- From: Pedro Alves <palves at redhat dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Sat, 03 Mar 2012 15:16:46 +0000
- Subject: Re: [obv] testsuite: disp-step-syscall.exp: Setup KFAIL for PR server/13796
- References: <20120303070105.GA13581@host2.jankratochvil.net>
On 03/03/2012 07:01 AM, Jan Kratochvil wrote:
> Hi,
>
> [patch] Fix disp-step-syscall.exp on some i386 targets
> http://sourceware.org/ml/gdb-patches/2012-02/msg00635.html
>
> just fixed a testcase which revealed existing IMO gdbserver Bug, therefore
> just KFAILed it.
>
> stepi
> Program terminated with signal SIGILL, Illegal instruction.
> The program no longer exists.
> (gdb) PASS: gdb.base/disp-step-syscall.exp: vfork: single step over vfork
> Child terminated with signal = 0x4 (SIGILL)
> GDBserver exiting
> print /x $pc
> No registers.
> (gdb) FAIL: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" (timeout)
I've analized this one before. The issue is that the test displace-steps over a vfork syscall.
In the special case of displace-stepping over a fork, GDB needs to adjust both the parent and
the child back from the displace stepping scratchpad. Since GDBserver doesn't
support following (v)forks yet, gdb is never informed about the child, and so the child
ends up continuing freely, unadjusted, from the scratchpad, and crashes.
So this is all really about the remote protocol not supporting following forks yet.
--
Pedro Alves