From patchwork Wed Oct 8 06:27:58 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 3131 Received: (qmail 31092 invoked by alias); 8 Oct 2014 06:32:34 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 30942 invoked by uid 89); 8 Oct 2014 06:32:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 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; Wed, 08 Oct 2014 06:32:31 +0000 Received: from svr-orw-fem-06.mgc.mentorg.com ([147.34.97.120]) by relay1.mentorg.com with esmtp id 1XbknU-000236-Ls from Yao_Qi@mentor.com ; Tue, 07 Oct 2014 23:32:28 -0700 Received: from qiyao.dyndns.org.com (147.34.91.1) by SVR-ORW-FEM-06.mgc.mentorg.com (147.34.97.120) with Microsoft SMTP Server id 14.3.181.6; Tue, 7 Oct 2014 23:32:28 -0700 From: Yao Qi To: CC: Subject: [PATCH 2/3] Get GDBserver pid on remote target Date: Wed, 8 Oct 2014 14:27:58 +0800 Message-ID: <1412749679-27076-3-git-send-email-yao@codesourcery.com> In-Reply-To: <1412749679-27076-1-git-send-email-yao@codesourcery.com> References: <543404EF.4010306@redhat.com> <1412749679-27076-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 X-IsSubscribed: yes Hi, We see the following fail in the real remote testing... (gdb) Executing on target: kill -9 29808 (timeout = 300) spawn [open ...]^M sh: 1: kill: No such process The test tries to kill gdbserver in this way: set server_pid [exp_pid -i [board_info target fileid]] remote_exec target "kill -9 $server_pid" in native testing, we'll get the pid of spawned gdbserver, however, in remote testing, we'll get the pid of ssh session, since we start gdbserver on the remote target through ssh. The pid on build doesn't exist on target. In this patch, we tweak server-kill.c to get the parent pid, which is the pid of GDBserver. GDB gets it and kill GDBserver on target. gdb/testsuite: 2014-10-08 Yao Qi * gdb.server/server-kill.c: Include sys/types.h and unistd.h. (main): Call getppid. * gdb.server/server-kill.exp: Set breakpoint on line "i = 0;" and continue to it. Read variable "server_pid". --- gdb/testsuite/gdb.server/server-kill.c | 10 +++++++++- gdb/testsuite/gdb.server/server-kill.exp | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/gdb.server/server-kill.c b/gdb/testsuite/gdb.server/server-kill.c index 8a7c74e..8369024b 100644 --- a/gdb/testsuite/gdb.server/server-kill.c +++ b/gdb/testsuite/gdb.server/server-kill.c @@ -15,10 +15,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include +#include + +int server_pid; + int main (void) { - int i = 0; + int i; + + server_pid = getppid (); + i = 0; return i; } diff --git a/gdb/testsuite/gdb.server/server-kill.exp b/gdb/testsuite/gdb.server/server-kill.exp index b23c2b5..0f808a9 100644 --- a/gdb/testsuite/gdb.server/server-kill.exp +++ b/gdb/testsuite/gdb.server/server-kill.exp @@ -33,7 +33,22 @@ gdb_test "disconnect" ".*" gdbserver_run "" -set server_pid [exp_pid -i [board_info target fileid]] +# Continue past server_pid assignment. +gdb_breakpoint ${srcfile}:[gdb_get_line_number "i = 0;"] +gdb_continue_to_breakpoint "after server_pid assignment" + +# Get the pid of GDBServer. +set test "p server_pid" +gdb_test_multiple $test $test { + -re " = ($decimal)\r\n$gdb_prompt $" { + set server_pid $expect_out(1,string) + pass $test + } + -re "$gdb_prompt $" { + fail $test + return -1 + } +} remote_exec target "kill -9 $server_pid" # Force GDB to talk with GDBserver, so that we can get the