From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105839 invoked by alias); 23 Feb 2016 20:31:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 105830 invoked by uid 89); 23 Feb 2016 20:31:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=19415, 1226, sk:stepov, sk:step-ov X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 23 Feb 2016 20:31:34 +0000 Received: from svr-orw-fem-05.mgc.mentorg.com ([147.34.97.43]) by relay1.mentorg.com with esmtp id 1aYJcJ-0000yy-WD from Luis_Gustavo@mentor.com ; Tue, 23 Feb 2016 12:31:32 -0800 Received: from [172.30.1.130] (147.34.91.1) by svr-orw-fem-05.mgc.mentorg.com (147.34.97.43) with Microsoft SMTP Server id 14.3.224.2; Tue, 23 Feb 2016 12:31:31 -0800 Subject: Re: [PATCH 8/8] New test about step over clone syscall References: <1455892594-2294-1-git-send-email-yao.qi@linaro.org> <1455892594-2294-9-git-send-email-yao.qi@linaro.org> To: Yao Qi , Reply-To: Luis Machado From: Luis Machado Message-ID: <56CCC1A0.6010401@codesourcery.com> Date: Tue, 23 Feb 2016 20:31:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <1455892594-2294-9-git-send-email-yao.qi@linaro.org> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00700.txt.bz2 On 02/19/2016 12:36 PM, Yao Qi wrote: > This patch adds a new test for stepping over clone syscall. > > 2016-02-19 Yao Qi > > * gdb.base/step-over-syscall.exp (step_over_syscall): Kfail. > Invoke step_over_syscall "clone". > * gdb.base/step-over-clone.c: New file. > --- > gdb/testsuite/gdb.base/step-over-clone.c | 53 ++++++++++++++++++++++++++++ > gdb/testsuite/gdb.base/step-over-syscall.exp | 17 +++++++++ > 2 files changed, 70 insertions(+) > create mode 100644 gdb/testsuite/gdb.base/step-over-clone.c > > diff --git a/gdb/testsuite/gdb.base/step-over-clone.c b/gdb/testsuite/gdb.base/step-over-clone.c > new file mode 100644 > index 0000000..43b1933 > --- /dev/null > +++ b/gdb/testsuite/gdb.base/step-over-clone.c > @@ -0,0 +1,53 @@ > +/* This testcase is part of GDB, the GNU debugger. > + > + Copyright 2016 Free Software Foundation, Inc. > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 3 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program. If not, see . */ > + > +#define _GNU_SOURCE > +#include > +#include > +#include > + > +static void > +marker () {} > + > +#define STACK_SIZE 0x1000 > + > +static int > +clone_fn (void *unused) > +{ > + return 0; > +} > + > +int > +main (void) > +{ > + int i, pid; > + unsigned char *stack[6]; > + > + for (i = 0; i < (sizeof (stack) / sizeof (stack[0])); i++) > + stack[i] = malloc (STACK_SIZE); > + > + for (i = 0; i < (sizeof (stack) / sizeof (stack[0])); i++) > + { > + pid = clone (clone_fn, stack[i] + STACK_SIZE, CLONE_FILES | CLONE_VM, > + NULL); > + } > + > + for (i = 0; i < (sizeof (stack) / sizeof (stack[0])); i++) > + free (stack[i]); > + > + marker (); > +} > diff --git a/gdb/testsuite/gdb.base/step-over-syscall.exp b/gdb/testsuite/gdb.base/step-over-syscall.exp > index 863194b..e5a3d55 100644 > --- a/gdb/testsuite/gdb.base/step-over-syscall.exp > +++ b/gdb/testsuite/gdb.base/step-over-syscall.exp > @@ -122,6 +122,13 @@ proc step_over_syscall { syscall } { > foreach displaced $disp_step_opts { > with_test_prefix "displaced $displaced" { > > + if { $displaced == "on" && $syscall == "clone" } { > + # GDB doesn't support step over clone syscall with "...stepping over clone ..."? > + # displaced stepping. > + kfail "gdb/19675" "single step over clone" > + continue > + } > + > gdb_test "continue" \ > "Continuing\\..*Breakpoint \[0-9\]+, (.* in |__libc_|)$syscall \\(\\).*" \ > "continue to $syscall (3rd time)" > @@ -187,6 +194,15 @@ proc step_over_syscall { syscall } { > } > } > > + if { $syscall == "clone" } { > + # Create a breakpoint in the child with the condition > + # which is false, so that GDBserver can get the > + # event from the child but GDB doesn't see it. In > + # this way, we don't have to adjust test flow for "... to adjust the test flow..."?