From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2205) id 8B1043858D39; Wed, 17 Apr 2024 09:44:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8B1043858D39 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1713347095; bh=qF1hfQnJU02pTDPSbc0HCT9x5KCbE5RyxHAaUDllEG0=; h=From:To:Subject:Date:From; b=Xm4iz/VVXdsNojhDTvAqxoz6aRv53vihd4DFt+XBlwJuiyMDOgg4jdq0dYmW28YPB M4VmBrwv2rHc/DGwIsDKCvEIARHa2lE88sHyt5p9/JssomVgTWvfka4qoYDiD7MDHC XLMzF64HT4UCRogXB8lbY+5oSJN6bjNFgnTbhlyQ= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom de Vries To: gdb-cvs@sourceware.org Subject: [binutils-gdb] [gdb/testsuite] Fix gdbserver pid in gdb.server/server-kill-python.exp X-Act-Checkin: binutils-gdb X-Git-Author: Tom de Vries X-Git-Refname: refs/heads/master X-Git-Oldrev: 0f077fcae0f1b090439169c471bba29b3be86615 X-Git-Newrev: 75d277b1f506dcfbedfee3bef078dfe2b484958b Message-Id: <20240417094455.8B1043858D39@sourceware.org> Date: Wed, 17 Apr 2024 09:44:54 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D75d277b1f506= dcfbedfee3bef078dfe2b484958b commit 75d277b1f506dcfbedfee3bef078dfe2b484958b Author: Tom de Vries Date: Wed Apr 17 11:45:02 2024 +0200 [gdb/testsuite] Fix gdbserver pid in gdb.server/server-kill-python.exp =20 The commit ed32754a8c7 ("[gdb/testsuite] Fix gdb.server/multi-ui-errors= .exp for remote target") intended to addresss the problem that this command: ... set gdbserver_pid [exp_pid -i $server_spawn_id] ... does not return the pid of the gdbserver for remote target, but rather = the one of the ssh client session. =20 To fix this, it added another way of getting the gdbserver_pid. =20 For the trivial case of non-remote target, the PID found by either meth= od should be identical, but if we compare those by adding "puts [exec ps -p $gdbserver_pid]" we get: ... PID TTY TIME CMD 31711 pts/8 00:00:00 gdbserver PID TTY TIME CMD 31718 pts/8 00:00:00 server-kill-pyt ... =20 The problem is that while the gdbserver PID is supposed to be read from= the result of "gdb.execute ('p server_pid')" in the python script, instead = it's taken from: ... Process server-kill-python created; pid =3D 31718^M ... =20 Fix this by moving the printing of the gdbserver PID out of the python = script. =20 Also double-check the two methods against each other, in the cases that= they should match. =20 Tested on x86_64-linux. =20 PR testsuite/31633 https://sourceware.org/bugzilla/show_bug.cgi?id=3D31633 Diff: --- gdb/testsuite/gdb.server/server-kill-python.exp | 37 ++++++++++++++-------= ---- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/gdb/testsuite/gdb.server/server-kill-python.exp b/gdb/testsuit= e/gdb.server/server-kill-python.exp index 87f9b56bd39..f02c69c502f 100644 --- a/gdb/testsuite/gdb.server/server-kill-python.exp +++ b/gdb/testsuite/gdb.server/server-kill-python.exp @@ -37,7 +37,7 @@ set host_binfile [gdb_remote_download host $binfile] set res [gdbserver_spawn "${target_binfile}"] set gdbserver_protocol [lindex $res 0] set gdbserver_gdbport [lindex $res 1] -set gdbserver_pid [exp_pid -i $server_spawn_id] +set gdbserver_pid_check [exp_pid -i $server_spawn_id] =20 set break_linenr [gdb_get_line_number "@@XX@@ Inferior Starting @@XX@@"] =20 @@ -48,9 +48,6 @@ puts $fd \ "import gdb =20 def do_gdb_stuff (): - gdb.execute ('break $srcfile:$break_linenr') - gdb.execute ('continue') - gdb.execute ('p server_pid') gdb.execute ('continue') =20 do_gdb_stuff()" @@ -68,24 +65,32 @@ if {[gdb_spawn_with_cmdline_opts \ =20 gdb_load $binfile gdb_target_cmd $gdbserver_protocol $gdbserver_gdbport -send_gdb "source $host_file1\n" + +gdb_test "break $srcfile:$break_linenr" =20 # Get the gdbserver PID. set gdbserver_pid 0 - -# Wait for the inferior to start up. -with_spawn_id $server_spawn_id { - gdb_test_multiple "" "get gdbserver PID" { - -re " =3D ($decimal)\r\n" { - set gdbserver_pid $expect_out(1,string) - pass $gdb_test_name - } +gdb_test "continue" +gdb_test_multiple "print server_pid" "get gdbserver PID" { + -re -wrap " =3D ($decimal)" { + set gdbserver_pid $expect_out(1,string) + pass $gdb_test_name } +} =20 - if { $gdbserver_pid =3D=3D 0 } { - return - } +if { $gdbserver_pid =3D=3D 0 } { + return +} + +if { ![is_remote target] && $gdbserver_pid !=3D $gdbserver_pid_check } { + error "Failed to get correct gdbserver pid" +} =20 +send_gdb "source $host_file1\n" + + +# Wait for the inferior to start up. +with_spawn_id $server_spawn_id { gdb_test_multiple "" "ensure inferior is running" { -re "@@XX@@ Inferior Starting @@XX@@" { pass $gdb_test_name