From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id E118438582B0 for ; Thu, 9 Mar 2023 09:45:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E118438582B0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 2525E1FFC7 for ; Thu, 9 Mar 2023 09:45:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1678355135; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sbvqsjNSBa1l/d7KGKlXpL6H9wCpgp9v2XQ7QNOMPno=; b=QxQAUtWboZ+9rZFXmU1PqW4DZ7szMK63WrG7EB1pRxcPx6cCde7fC5CBumWLJG5H1Mc8tk lMM//QQwuimQcZEKPY4/BR3BrpDouD4fAhL8XD/oF6XO2PThqBfZC9g3hPvWchJZNRu+8k Nb7o/kQsto41VJCvhvdaWjqEGMmP7dM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1678355135; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sbvqsjNSBa1l/d7KGKlXpL6H9wCpgp9v2XQ7QNOMPno=; b=ztmK4v/xgxOGtqxTMK0/OW5B6yEyNSJzVlB8tUBc9zmKyqhTBGVup9mQ7r7zr3V+WAmbdc v1Va4YDCVTqzS0AA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 129581391B for ; Thu, 9 Mar 2023 09:45:35 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id oEthA7+qCWS8FwAAMHmgww (envelope-from ) for ; Thu, 09 Mar 2023 09:45:35 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH 3/7] [gdb/testsuite] Fix gdb.server/multi-ui-errors.exp for remote target Date: Thu, 9 Mar 2023 10:45:41 +0100 Message-Id: <20230309094545.4537-3-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230309094545.4537-1-tdevries@suse.de> References: <20230309094545.4537-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Test-case gdb.server/multi-ui-errors.exp fails for target board remote-gdbserver-on-localhost with REMOTE_TARGET_USERNAME=remote-target: ... (gdb) PASS: gdb.server/multi-ui-errors.exp: interact with GDB's main UI Executing on target: kill -9 6447 (timeout = 300) builtin_spawn [open ...]^M XYZ1ZYX sh: line 0: kill: (6447) - Operation not permitted ... The problem is that the kill command: ... remote_exec target "kill -9 $gdbserver_pid" ... intended to kill gdbserver instead tries to kill the ssh client session in which the gdbserver runs, and fails because it's trying as the remote target user (remote-target on localhost) to kill a pid owned by the the build user ($USER on localhost). Fix this by getting the gdbserver pid using the ppid trick from server-kill.exp. Likewise in gdb.server/server-kill-python.exp. Tested on x86_64-linux. --- gdb/testsuite/gdb.server/multi-ui-errors.c | 5 ++++ gdb/testsuite/gdb.server/multi-ui-errors.exp | 29 +++++++++++++++++++ .../gdb.server/server-kill-python.exp | 23 ++++++++++++++- 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.server/multi-ui-errors.c b/gdb/testsuite/gdb.server/multi-ui-errors.c index 09739198cc1..afa1815fbee 100644 --- a/gdb/testsuite/gdb.server/multi-ui-errors.c +++ b/gdb/testsuite/gdb.server/multi-ui-errors.c @@ -17,12 +17,17 @@ #include #include +#include + +pid_t server_pid; int main (void) { int i; + server_pid = getppid (); + printf ("@@XX@@ Inferior Starting @@XX@@\n"); for (i = 0; i < 120; ++i) diff --git a/gdb/testsuite/gdb.server/multi-ui-errors.exp b/gdb/testsuite/gdb.server/multi-ui-errors.exp index 9cc5239d888..266207a5f4b 100644 --- a/gdb/testsuite/gdb.server/multi-ui-errors.exp +++ b/gdb/testsuite/gdb.server/multi-ui-errors.exp @@ -100,6 +100,35 @@ with_spawn_id $gdb_main_spawn_id { gdb_test "echo hello\\n" "hello" "interact with GDB's main UI" } +# Get the gdbserver PID. +set gdbserver_pid 0 +with_spawn_id $gdb_main_spawn_id { + gdb_test "interrupt" + + gdb_test_multiple "" "interrupt arrived" { + -re "Program received signal SIGINT, Interrupt\\.\r\n" { + pass $gdb_test_name + } + } + + gdb_test_multiple "p server_pid" "" { + -re -wrap " = ($decimal)" { + set gdbserver_pid $expect_out(1,string) + pass $gdb_test_name + } + } + + gdb_test_multiple continue "" { + -re "Continuing\\.\r\n" { + pass $gdb_test_name + } + } +} + +if { $gdbserver_pid == 0 } { + return +} + # Now kill the gdbserver. remote_exec target "kill -9 $gdbserver_pid" diff --git a/gdb/testsuite/gdb.server/server-kill-python.exp b/gdb/testsuite/gdb.server/server-kill-python.exp index 7b8f29b2890..f6b373065a8 100644 --- a/gdb/testsuite/gdb.server/server-kill-python.exp +++ b/gdb/testsuite/gdb.server/server-kill-python.exp @@ -30,12 +30,16 @@ if {[build_executable "failed to prepare" ${testfile} \ return -1 } +set target_binfile [gdb_remote_download target $binfile] + # Start gdbserver. -set res [gdbserver_spawn "${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 break_linenr [gdb_get_line_number "@@XX@@ Inferior Starting @@XX@@"] + # Generate a python script we will later source. set file1 [standard_output_file file1.py] set fd [open "$file1" w] @@ -44,6 +48,9 @@ puts $fd \ def do_gdb_stuff (): gdb.execute ('target $gdbserver_protocol $gdbserver_gdbport') + gdb.execute ('break $srcfile:$break_linenr') + gdb.execute ('continue') + gdb.execute ('p server_pid') gdb.execute ('continue') do_gdb_stuff()" @@ -57,8 +64,22 @@ if {[gdb_spawn_with_cmdline_opts \ return } +# 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 " = ($decimal)\r\n" { + set gdbserver_pid $expect_out(1,string) + pass $gdb_test_name + } + } + + if { $gdbserver_pid == 0 } { + return + } + gdb_test_multiple "" "ensure inferior is running" { -re "@@XX@@ Inferior Starting @@XX@@" { pass $gdb_test_name -- 2.35.3